<?php

namespace icircle\tests\Template\Docx\RepeatListTest;

use icircle\Template\Docx\DocxTemplate;
use icircle\tests\Template\Util;

class Test extends \PHPUnit_Framework_TestCase{

    public function testRepeating(){
        
        $tempDir = Util::createTempDir('/icircle/template/docx');

        $templatePath = $tempDir.'/template.docx';
        copy(dirname(__FILE__).'/template.docx', $templatePath);

        $template = new \ZipArchive();
        $template->open($templatePath,\ZipArchive::CREATE);
        $template->close();

        $docxTemplate = new DocxTemplate($templatePath);
        $outputPath = Util::createTempDir('/icircle/template/docx').'/mergedOutput.docx';
        
        $this->assertFalse(file_exists($outputPath));

        //testing merge method
        $data = array("host"=>array("name"=>"My Company"));
        $record = array(
        		"list1"=>array(
        				array("name"=>"list1item1"),
        				array("name"=>"list1item2"),
        				array("name"=>"list1item3")
        		),
        		"list2"=>array(
        				array("name"=>"list2item1"),
        				array("name"=>"list2item2"),
        				array("name"=>"list2item3")
        		),
        		"list3"=>array(
        				array(
        						"name"=>"list3item1",
        						"title"=>array("list3Title11","list3Title12","list3Title13")
        				),
        				array(
        						"name"=>"list3item2",
        						"title"=>array("list3Title21","list3Title22","list3Title23")
        				),
        				array(
        						"name"=>"list3item3",
        						"title"=>"list3Title3"
        				)
        		)
        );
        $data["record"] = $record;
        $docxTemplate->merge($data,$outputPath);

        $resultZip = new \ZipArchive();
        $resultZip->open($outputPath);
        $resultZip->extractTo($outputPath."_");

        $resultDoc = new \DOMDocument();
        $resultDoc->load($outputPath."_"."/word/document.xml");

        $expectedXML = '<w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"><w:body><w:p w:rsidR="006D4B98" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>aaaa</w:t></w:r><w:proofErr w:type="spellEnd"/></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>bbbb</w:t></w:r><w:proofErr w:type="spellEnd"/></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>cccc</w:t></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="000417BC"><w:t/></w:r><w:r w:rsidR="000417BC" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="007D0D01"><w:t/></w:r><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="00B96A60"><w:t>list1item1</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>cccc</w:t></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="000417BC"><w:t/></w:r><w:r w:rsidR="000417BC" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="007D0D01"><w:t/></w:r><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="00B96A60"><w:t>list1item2</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>cccc</w:t></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="000417BC"><w:t/></w:r><w:r w:rsidR="000417BC" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="007D0D01"><w:t/></w:r><w:r w:rsidR="00BF5A87"><w:t/></w:r><w:r w:rsidR="00B96A60"><w:t>list1item3</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="1"/></w:numPr></w:pPr><w:proofErr w:type="spellStart"/><w:r><w:t>dddd</w:t></w:r><w:proofErr w:type="spellEnd"/></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/></w:pPr></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/></w:pPr></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>1111</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>2222</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>3333</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>4444</w:t></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t>list2item1</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>4444</w:t></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t>list2item2</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="0"/><w:numId w:val="2"/></w:numPr></w:pPr><w:r><w:t>4444</w:t></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="00BB2C2B"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t/></w:r><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidR="003C350C" w:rsidRPr="000417BC"><w:t/></w:r><w:r w:rsidR="003C350C"><w:t>list2item3</w:t></w:r></w:p><w:p w:rsidR="0021197C" w:rsidRDefault="0021197C" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:ind w:left="1440"/></w:pPr></w:p><w:p w:rsidR="00D66890" w:rsidRDefault="00D66890" w:rsidP="00D66890"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="4"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>Heading</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t>list3item1</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="5"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>sub heading</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title11 </w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title12 </w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title13 </w:t></w:r></w:p><w:p w:rsidR="00D66890" w:rsidRDefault="00D66890" w:rsidP="00D66890"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="4"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>Heading</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t>list3item2</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="5"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>sub heading</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title21 </w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title22 </w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="6"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>title</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t xml:space="preserve">list3Title23 </w:t></w:r></w:p><w:p w:rsidR="00D66890" w:rsidRDefault="00D66890" w:rsidP="00D66890"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="4"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>Heading</w:t></w:r><w:proofErr w:type="spellStart"/><w:r><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r><w:t/></w:r><w:r w:rsidRPr="000417BC"><w:t xml:space="preserve"/></w:r><w:proofErr w:type="spellStart"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:proofErr w:type="spellEnd"/><w:r w:rsidRPr="000417BC"><w:t/></w:r><w:r><w:t>list3item3</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:numPr><w:ilvl w:val="5"/><w:numId w:val="4"/></w:numPr></w:pPr><w:r><w:t>sub heading</w:t></w:r></w:p><w:p w:rsidR="00D72717" w:rsidRDefault="00D72717" w:rsidP="00D72717"><w:pPr><w:pStyle w:val="ListParagraph"/><w:ind w:left="1008"/></w:pPr></w:p><w:p w:rsidR="00D66890" w:rsidRDefault="00D66890" w:rsidP="0021197C"><w:pPr><w:pStyle w:val="ListParagraph"/><w:ind w:left="1440"/></w:pPr></w:p><w:sectPr w:rsidR="00D66890" w:rsidSect="00CC41CA"><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>';
        
        $this->assertTrue($resultDoc->saveXML($resultDoc->documentElement) == $expectedXML);
    }

}


?>
