예제 #1
0
 public function testExtractDataByPatternWithArray()
 {
     $content = '';
     $selector = '.item';
     $fieldSelector = '.title';
     $data1 = 'Test Title 1';
     $data2 = 'Test Title 2';
     $elementMock = $this->getMockBuilder(DOMMock::class)->setMethods(['text'])->getMock();
     $elementMock->expects($this->at(0))->method('text')->will($this->returnValue($data1));
     $elementMock->expects($this->at(1))->method('text')->will($this->returnValue($data2));
     $itemMock = $this->getMockBuilder(DOMMock::class)->setMethods(['find'])->getMock();
     $itemMock->expects($this->exactly(2))->method('find')->with($this->equalTo($fieldSelector))->will($this->returnValue([$elementMock]));
     $domMock = $this->getMockBuilder(DOMMock::class)->setMethods(['find'])->getMock();
     $domMock->expects($this->once())->method('find')->with($this->equalTo($selector))->will($this->returnValue([$itemMock, $itemMock]));
     $domParserMock = $this->getMockBuilder(DOMParserMock::class)->setMethods(['getDOM'])->getMock();
     $domParserMock->expects($this->once())->method('getDOM')->with($this->equalTo($content))->will($this->returnValue($domMock));
     $pattern = ['items' => ['selector' => $selector, 'fields' => ['title' => $fieldSelector]]];
     $expected = ['items' => [['title' => [$data1]], ['title' => [$data2]]]];
     $parser = new \jakulov\HyperParser\Parser($domParserMock);
     $actual = $parser->extractDataByPattern($content, $pattern);
     $this->assertEquals($expected, $actual);
 }