public function testAutoSelectColumns() { $expected = [[], ['language_id', 'name']]; $iterations = count($expected); $db = $this->getMockBuilder(Db::class)->disableOriginalConstructor()->getMock(); $factory = $this->getMockBuilder(Factory\Factory::class)->getMock(); $query = $this->getMockBuilder(Query\Select::class)->disableOriginalConstructor()->getMock(); $factory->expects($this->exactly($iterations))->method('getSelectQuery')->will($this->returnValue($query)); $db->expects($this->atLeastOnce())->method('getFactory')->will($this->returnValue($factory)); $db->expects($this->any())->method('getConventionTableName')->will($this->returnArgument(0)); $db->expects($this->exactly($iterations))->method('getTableColumns')->will($this->onConsecutiveCalls(null, $expected[1])); for ($i = 0; $i < $iterations; ++$i) { $table = new Table($db, 'language'); $this->assertEquals($expected[$i], $table->getUsedColumns()); foreach ($table as $id => $row) { $row['name']; } $query = $table->getQuery(); $query->dropResult(); } }