public function testLoadAllGroups($offset = 0, $limit = -1)
{
$testGroups = $this->generateObjectGroupsArray();
$testGroupIds = array_map(function ($group) {
return $group->id;
}, $testGroups);
$cacheItemMock = $this->getMock('Stash\\Interfaces\\ItemInterface');
$this->cacheMock->expects($this->at(0))->method('getItem')->with('objectstategroup', 'all')->will($this->returnValue($cacheItemMock));
$cacheItemMock->expects($this->once())->method('get')->will($this->returnValue(null));
$cacheItemMock->expects($this->once())->method('isMiss')->will($this->returnValue(true));
$this->loggerMock->expects($this->once())->method('logCall');
$innerHandlerMock = $this->getMock('eZ\\Publish\\SPI\\Persistence\\Content\\ObjectState\\Handler');
$this->persistenceHandlerMock->expects($this->once())->method('objectStateHandler')->will($this->returnValue($innerHandlerMock));
$innerHandlerMock->expects($this->once())->method('loadAllGroups')->with(0, -1)->will($this->returnValue($testGroups));
foreach ($testGroups as $group) {
$this->cacheMock->expects($this->at($group->id))->method('getItem')->with('objectstategroup', $group->id)->will($this->returnCallback(function ($cachekey, $i) use($group) {
$cacheItemMock = $this->getMock('Stash\\Interfaces\\ItemInterface');
$cacheItemMock->expects($this->once())->method('set')->with($group)->will($this->returnValue($cacheItemMock));
$cacheItemMock->expects($this->once())->method('save')->with();
return $cacheItemMock;
}));
}
$cacheItemMock->expects($this->once())->method('set')->with($testGroupIds)->will($this->returnValue($cacheItemMock));
$cacheItemMock->expects($this->once())->method('save')->with();
$handler = $this->persistenceCacheHandler->objectStateHandler();
$groups = $handler->loadAllGroups($offset, $limit);
$expectedGroups = array_slice($testGroups, $offset, $limit > -1 ?: null);
$this->assertEquals($groups, $expectedGroups);
}