eZ\Publish\Core\Persistence\Cache\Tests\ObjectStateHandlerTest::testLoadAllGroups PHP Method

testLoadAllGroups() public method

public testLoadAllGroups ( $offset, $limit )
    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);
    }