19 private $temporaryTableService;
43 $this->adapterMock = $this->createMock(AdapterInterface::class);
44 $this->selectMock = $this->createMock(Select::class);
45 $this->randomMock = $this->createMock(Random::class);
46 $this->temporaryTableService = (
new ObjectManager($this))->getObject(
47 TemporaryTableService::class,
49 'random' => $this->randomMock,
50 'allowedIndexMethods' => [
'HASH'],
51 'allowedEngines' => [
'INNODB']
63 $this->expectException(\InvalidArgumentException::class);
64 $random =
'random_table';
66 [
'PRIMARY' => [
'primary_column_name']],
67 'CREATE TEMPORARY TABLE random_table (PRIMARY KEY(primary_column_name)) ENGINE=INNODB IGNORE ' 68 .
'(select * from sometable)' 73 $this->temporaryTableService->createFromSelect(
93 $selectString =
'select * from sometable';
94 $random =
'random_table';
96 $this->randomMock->expects($this->once())
97 ->method(
'getUniqueHash')
98 ->willReturn($random);
100 $this->adapterMock->expects($this->once())
102 ->with($expectedSelect)
105 $this->adapterMock->expects($this->once())
109 $this->adapterMock->expects($this->any())
110 ->method(
'quoteIdentifier')
111 ->willReturnArgument(0);
113 $this->selectMock->expects($this->once())
115 ->willReturn([
'bind']);
117 $this->selectMock->expects($this->any())
118 ->method(
'__toString')
119 ->willReturn($selectString);
123 $this->temporaryTableService->createFromSelect(
138 $this->assertFalse($this->temporaryTableService->dropTable(
'tmp_select_table'));
152 $createdTableAdapters = new \ReflectionProperty($this->temporaryTableService,
'createdTableAdapters');
153 $createdTableAdapters->setAccessible(
true);
154 $createdTableAdapters->setValue($this->temporaryTableService, [
'tmp_select_table' => $this->adapterMock]);
155 $createdTableAdapters->setAccessible(
false);
157 $this->adapterMock->expects($this->any())
158 ->method(
'dropTemporaryTable')
161 $this->assertEquals($this->temporaryTableService->dropTable(
$tableName), $assertion);
171 [
'PRIMARY' => [
'primary_column_name']],
172 'CREATE TEMPORARY TABLE random_table (PRIMARY KEY(primary_column_name)) ENGINE=INNODB IGNORE ' 173 .
'(select * from sometable)' 176 [
'UNQ_INDX' => [
'column1',
'column2']],
177 'CREATE TEMPORARY TABLE random_table (UNIQUE UNQ_INDX(column1,column2)) ENGINE=INNODB IGNORE ' 178 .
'(select * from sometable)' 181 [
'OTH_INDX' => [
'column3',
'column4']],
182 'CREATE TEMPORARY TABLE random_table (INDEX OTH_INDX USING HASH(column3,column4)) ENGINE=INNODB IGNORE ' 183 .
'(select * from sometable)' 187 'PRIMARY' => [
'primary_column_name'],
188 'OTH_INDX' => [
'column3',
'column4'],
189 'UNQ_INDX' => [
'column1',
'column2']
191 'CREATE TEMPORARY TABLE random_table ' 192 .
'(PRIMARY KEY(primary_column_name),' 193 .
'INDEX OTH_INDX USING HASH(column3,column4),UNIQUE UNQ_INDX(column1,column2)) ENGINE=INNODB IGNORE ' 194 .
'(select * from sometable)' 205 [
'tmp_select_table_1',
false],
206 [
'tmp_select_table',
true],
testDropTableWhenCreatedTablesArrayIsEmpty()
createFromSelectDataProvider()
testCreateFromSelect($indexes, $expectedSelect)
testDropTableWhenCreatedTablesArrayNotEmpty($tableName, $assertion)
testCreateFromSelectWithException()
dropTableWhenCreatedTablesArrayNotEmptyDataProvider()