Show
Ignore:
Timestamp:
03/18/08 14:59:53 (2 years ago)
Author:
mikey
Message:

enhancement #133, part 1: XML processor should use website cache - xml generators now have methods to determine cache ability and cache keys

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/test/php/net/stubbles/websites/xml/generator/stubPageXMLGeneratorTestCase.php

    r1427 r1433  
    7575        $this->page                = new stubPage(); 
    7676        $this->mockInjector        = $this->getMock('stubInjector'); 
    77         $this->pageXMLGenerator    = new stubPageXMLGenerator($this->mockRequest, $this->mockSession, $this->mockResponse, $this->page, $this->mockInjector); 
     77        $this->pageXMLGenerator    = new stubPageXMLGenerator($this->mockRequest, $this->mockSession, $this->mockResponse, $this->mockInjector); 
     78        $this->pageXMLGenerator->setPage($this->page); 
    7879        $this->mockXMLStreamWriter = $this->getMock('stubXMLStreamWriter'); 
    7980        $this->mockXMLSerializer   = $this->getMock('stubXMLSerializer'); 
     
    102103        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
    103104        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
     105        $this->assertTrue($this->pageXMLGenerator->isCachable()); 
     106        $this->assertEquals(array(), $this->pageXMLGenerator->getCacheVars()); 
     107        $this->assertEquals(array(), $this->pageXMLGenerator->getUsedFiles()); 
    104108        $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    105109    } 
     
    116120        $pageElement1 = $this->getMock('stubPageElement'); 
    117121        $pageElement1->expects($this->any())->method('getName')->will($this->returnValue('foo')); 
     122        $pageElement1->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     123        $pageElement1->expects($this->once())->method('isCachable')->will($this->returnValue(true)); 
     124        $pageElement1->expects($this->once())->method('getCacheVars')->will($this->returnValue(array())); 
     125        $pageElement1->expects($this->once())->method('getUsedFiles')->will($this->returnValue(array())); 
    118126        $pageElement1->expects($this->once())->method('process')->will($this->returnValue('foo')); 
    119         $pageElement1->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
    120127        $pageElement2 = $this->getMock('stubPageElement'); 
    121128        $pageElement2->expects($this->any())->method('getName')->will($this->returnValue('bar')); 
     129        $pageElement2->expects($this->once())->method('isAvailable')->will($this->returnValue(false)); 
     130        $pageElement2->expects($this->never())->method('isCachable'); 
     131        $pageElement2->expects($this->never())->method('getCacheVars'); 
     132        $pageElement2->expects($this->never())->method('getUsedFiles'); 
    122133        $pageElement2->expects($this->never())->method('process'); 
    123         $pageElement2->expects($this->once())->method('isAvailable')->will($this->returnValue(false)); 
    124134        $pageElement3 = $this->getMock('stubXMLPageElement'); 
    125135        $pageElement3->expects($this->any())->method('getName')->will($this->returnValue('baz')); 
     136        $pageElement3->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     137        $pageElement3->expects($this->once())->method('isCachable')->will($this->returnValue(true)); 
     138        $pageElement3->expects($this->once())->method('getCacheVars')->will($this->returnValue(array())); 
     139        $pageElement3->expects($this->once())->method('getUsedFiles')->will($this->returnValue(array())); 
    126140        $pageElement3->expects($this->once())->method('process')->will($this->returnValue('baz')); 
    127         $pageElement3->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
    128141        $pageElement3->expects($this->once())->method('getFormValues')->will($this->returnValue(array('foo'))); 
    129142        $this->page->addElement($pageElement1); 
    130143        $this->page->addElement($pageElement2); 
    131144        $this->page->addElement($pageElement3); 
     145        $this->pageXMLGenerator->setPage($this->page); 
    132146         
    133147        $this->mockXMLSerializer->expects($this->at(0)) 
     
    142156        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
    143157        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
     158        $this->assertTrue($this->pageXMLGenerator->isCachable()); 
     159        $this->assertEquals(array(), $this->pageXMLGenerator->getCacheVars()); 
     160        $this->assertEquals(array(), $this->pageXMLGenerator->getUsedFiles()); 
    144161        $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    145162    } 
     
    153170    { 
    154171        $this->mockRequest->expects($this->once())->method('isCancelled')->will($this->returnValue(true)); 
    155         $this->mockInjector->expects($this->once())->method('handleInjections'); 
     172        $this->mockInjector->expects($this->exactly(2))->method('handleInjections'); 
    156173        $pageElement1 = $this->getMock('stubPageElement'); 
    157174        $pageElement1->expects($this->any())->method('getName')->will($this->returnValue('foo')); 
     175        $pageElement1->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     176        $pageElement1->expects($this->once())->method('isCachable')->will($this->returnValue(true)); 
     177        $pageElement1->expects($this->once())->method('getCacheVars')->will($this->returnValue(array('foo' => 'bar'))); 
     178        $pageElement1->expects($this->once())->method('getUsedFiles')->will($this->returnValue(array('foo.xml'))); 
    158179        $pageElement1->expects($this->once())->method('process')->will($this->returnValue('foo')); 
    159         $pageElement1->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
    160180        $pageElement2 = $this->getMock('stubPageElement'); 
    161181        $pageElement2->expects($this->any())->method('getName')->will($this->returnValue('bar')); 
     182        $pageElement2->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     183        $pageElement2->expects($this->once())->method('isCachable')->will($this->returnValue(true)); 
     184        $pageElement2->expects($this->once())->method('getCacheVars')->will($this->returnValue(array('bar' => 313))); 
     185        $pageElement2->expects($this->once())->method('getUsedFiles')->will($this->returnValue(array())); 
    162186        $pageElement2->expects($this->never())->method('process'); 
    163         $pageElement2->expects($this->never())->method('isAvailable'); 
    164187        $this->page->addElement($pageElement1); 
    165188        $this->page->addElement($pageElement2); 
     189        $this->pageXMLGenerator->setPage($this->page); 
    166190         
    167191        $this->mockXMLSerializer->expects($this->never())->method('serialize'); 
    168192        $this->mockXMLStreamWriter->expects($this->never())->method('writeStartElement'); 
    169193        $this->mockXMLStreamWriter->expects($this->never())->method('writeEndElement'); 
     194        $this->assertTrue($this->pageXMLGenerator->isCachable()); 
     195        $this->assertEquals(array('foo' => 'bar', 'bar' => 313), $this->pageXMLGenerator->getCacheVars()); 
     196        $this->assertEquals(array('foo.xml'), $this->pageXMLGenerator->getUsedFiles()); 
     197        $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
     198    } 
     199 
     200    /** 
     201     * page with cancelling elements: stop processing 
     202     * 
     203     * @test 
     204     */ 
     205    public function pageWithNonCachableElement() 
     206    { 
     207        $this->mockRequest->expects($this->exactly(2))->method('isCancelled')->will($this->returnValue(false)); 
     208        $this->mockInjector->expects($this->exactly(2))->method('handleInjections'); 
     209        $pageElement1 = $this->getMock('stubPageElement'); 
     210        $pageElement1->expects($this->any())->method('getName')->will($this->returnValue('foo')); 
     211        $pageElement1->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     212        $pageElement1->expects($this->once())->method('isCachable')->will($this->returnValue(false)); 
     213        $pageElement1->expects($this->never())->method('getCacheVars'); 
     214        $pageElement1->expects($this->never())->method('getUsedFiles'); 
     215        $pageElement1->expects($this->once())->method('process')->will($this->returnValue('foo')); 
     216        $pageElement2 = $this->getMock('stubPageElement'); 
     217        $pageElement2->expects($this->any())->method('getName')->will($this->returnValue('bar')); 
     218        $pageElement2->expects($this->once())->method('isAvailable')->will($this->returnValue(true)); 
     219        $pageElement2->expects($this->never())->method('isCachable'); 
     220        $pageElement1->expects($this->never())->method('getCacheVars'); 
     221        $pageElement1->expects($this->never())->method('getUsedFiles'); 
     222        $pageElement2->expects($this->once())->method('process')->will($this->returnValue('bar')); 
     223        $this->page->addElement($pageElement1); 
     224        $this->page->addElement($pageElement2); 
     225        $this->pageXMLGenerator->setPage($this->page); 
     226         
     227        $this->mockXMLSerializer->expects($this->at(0)) 
     228                                ->method('serialize') 
     229                                ->with($this->equalTo('foo'), $this->equalTo($this->mockXMLStreamWriter), $this->equalTo(array(stubXMLSerializer::OPT_ROOT_TAG => 'foo'))); 
     230        $this->mockXMLSerializer->expects($this->at(1)) 
     231                                ->method('serialize') 
     232                                ->with($this->equalTo('bar'), $this->equalTo($this->mockXMLStreamWriter), $this->equalTo(array(stubXMLSerializer::OPT_ROOT_TAG => 'bar'))); 
     233        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
     234        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
     235        $this->assertFalse($this->pageXMLGenerator->isCachable()); 
     236        $this->assertEquals(array(), $this->pageXMLGenerator->getCacheVars()); 
     237        $this->assertEquals(array(), $this->pageXMLGenerator->getUsedFiles()); 
    170238        $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    171239    } 
     
    179247    { 
    180248        $this->page->setResources(array('foo' => 'stdClass')); 
     249        $this->pageXMLGenerator->setPage($this->page); 
    181250         
    182251        $this->mockRequest->expects($this->never())->method('isCancelled'); 
     
    192261        $this->mockXMLStreamWriter->expects($this->once())->method('writeStartElement'); 
    193262        $this->mockXMLStreamWriter->expects($this->once())->method('writeEndElement'); 
    194         $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    195          
     263        $this->assertFalse($this->pageXMLGenerator->isCachable()); 
     264        $this->assertEquals(array(), $this->pageXMLGenerator->getCacheVars()); 
     265        $this->assertEquals(array(), $this->pageXMLGenerator->getUsedFiles()); 
     266        $this->pageXMLGenerator->generate($this->mockXMLStreamWriter, $this->mockXMLSerializer); 
    196267    } 
    197268}