CRUDlexTests\MySQLDataTest::testList PHP Method

testList() public method

public testList ( )
    public function testList()
    {
        $library = $this->dataLibrary->createEmpty();
        $library->set('name', 'nameA');
        $this->dataLibrary->create($library);
        $book = $this->dataBook->createEmpty();
        $book->set('title', 'title');
        $book->set('author', 'author');
        $book->set('pages', 111);
        $book->set('library', $library->get('id'));
        $this->dataBook->create($book);
        $library->set('libraryBook', [['id' => $book->get('id')]]);
        $this->dataLibrary->update($library);
        $entity = new Entity($this->dataBook->getDefinition());
        $entity->set('name', 'nameB');
        $this->dataLibrary->create($entity);
        $list = $this->dataLibrary->listEntries(['name' => 'nameA'], ['name' => '=']);
        $read = $list[0]->get('libraryBook');
        $expected = [['id' => $book->get('id'), 'name' => $book->get('title')]];
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries(['libraryBook' => [['id' => $book->get('id')]]], ['libraryBook' => '=']);
        $read = count($list);
        $expected = 1;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries();
        $read = count($list);
        $expected = 2;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries(['name' => 'nameB'], ['name' => '=']);
        $read = count($list);
        $expected = 1;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries(['name' => 'nameB', 'id' => 2], ['name' => '=', 'id' => '=']);
        $read = count($list);
        $expected = 1;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries(['type' => null], ['type' => '=']);
        $read = count($list);
        $expected = 2;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries(['name' => '%eB%'], ['name' => 'LIKE']);
        $read = count($list);
        $expected = 1;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries([], [], null, null, 'name');
        $expected = 'nameB';
        $this->assertSame($expected, $list[0]->get('name'));
        $expected = 'nameA';
        $this->assertSame($expected, $list[1]->get('name'));
        // Sorting by many fields should fall back to the initial sort field
        $list = $this->dataLibrary->listEntries([], [], null, null, 'libraryBook');
        $expected = 'nameB';
        $this->assertSame($expected, $list[0]->get('name'));
        $expected = 'nameA';
        $this->assertSame($expected, $list[1]->get('name'));
        for ($i = 0; $i < 15; ++$i) {
            $entity->set('name', 'name' . $i);
            $this->dataLibrary->create($entity);
        }
        $list = $this->dataLibrary->listEntries([], [], null, null);
        $read = count($list);
        $expected = 17;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries([], [], null, 5);
        $read = count($list);
        $expected = 5;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries([], [], 0, 5);
        $read = count($list);
        $expected = 5;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries([], [], 15, 5);
        $read = count($list);
        $expected = 2;
        $this->assertSame($expected, $read);
        $list = $this->dataLibrary->listEntries([], [], 5, null);
        $read = count($list);
        $expected = 12;
        $this->assertSame($expected, $read);
    }