Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
f22e7c65
Commit
f22e7c65
authored
Jun 17, 2011
by
Benjamin Eberlei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DBAL-130 - Add tests for various limit subquery use-cases
parent
58e44161
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
111 additions
and
0 deletions
+111
-0
AllTests.php
tests/Doctrine/Tests/DBAL/Functional/AllTests.php
+1
-0
ModifyLimitQueryTest.php
...s/Doctrine/Tests/DBAL/Functional/ModifyLimitQueryTest.php
+110
-0
No files found.
tests/Doctrine/Tests/DBAL/Functional/AllTests.php
View file @
f22e7c65
...
...
@@ -42,6 +42,7 @@ class AllTests
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Functional\LoggingTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Functional\TypeConversionTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Functional\PortabilityTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Functional\ModifyLimitQueryTest'
);
return
$suite
;
}
...
...
tests/Doctrine/Tests/DBAL/Functional/ModifyLimitQueryTest.php
0 → 100644
View file @
f22e7c65
<?php
namespace
Doctrine\Tests\DBAL\Functional
;
use
Doctrine\DBAL\Types\Type
;
use
Doctrine\DBAL\Connection
;
use
PDO
;
require_once
__DIR__
.
'/../../TestInit.php'
;
class
ModifyLimitQueryTest
extends
\Doctrine\Tests\DbalFunctionalTestCase
{
private
static
$tableCreated
=
false
;
public
function
setUp
()
{
parent
::
setUp
();
if
(
!
self
::
$tableCreated
)
{
/* @var $sm \Doctrine\DBAL\Schema\AbstractSchemaManager */
$table
=
new
\Doctrine\DBAL\Schema\Table
(
"modify_limit_table"
);
$table
->
addColumn
(
'test_int'
,
'integer'
);
$table2
=
new
\Doctrine\DBAL\Schema\Table
(
"modify_limit_table2"
);
$table2
->
addColumn
(
'test_int'
,
'integer'
);
$sm
=
$this
->
_conn
->
getSchemaManager
();
$sm
->
createTable
(
$table
);
$sm
->
createTable
(
$table2
);
self
::
$tableCreated
=
true
;
}
$this
->
_conn
->
exec
(
$this
->
_conn
->
getDatabasePlatform
()
->
getTruncateTableSQL
(
'modify_limit_table'
));
$this
->
_conn
->
exec
(
$this
->
_conn
->
getDatabasePlatform
()
->
getTruncateTableSQL
(
'modify_limit_table2'
));
}
public
function
testModifyLimitQuerySimpleQuery
()
{
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
3
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
4
));
$sql
=
"SELECT * FROM modify_limit_table"
;
$this
->
assertLimitResult
(
array
(
1
,
2
,
3
,
4
),
$sql
,
10
,
0
);
$this
->
assertLimitResult
(
array
(
1
,
2
),
$sql
,
2
,
0
);
$this
->
assertLimitResult
(
array
(
3
,
4
),
$sql
,
2
,
2
);
}
public
function
testModifyLimitQueryJoinQuery
()
{
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
2
));
$sql
=
"SELECT modify_limit_table.test_int FROM modify_limit_table INNER JOIN modify_limit_table2 ON modify_limit_table.test_int = modify_limit_table2.test_int"
;
$this
->
assertLimitResult
(
array
(
1
,
1
,
1
,
2
,
2
),
$sql
,
10
,
0
);
$this
->
assertLimitResult
(
array
(
1
,
1
,
1
),
$sql
,
3
,
0
);
$this
->
assertLimitResult
(
array
(
2
,
2
),
$sql
,
2
,
3
);
}
public
function
testModifyLimitQueryOrderBy
()
{
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
3
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
4
));
$sql
=
"SELECT * FROM modify_limit_table ORDER BY test_int DESC"
;
$this
->
assertLimitResult
(
array
(
4
,
3
,
2
,
1
),
$sql
,
10
,
0
);
$this
->
assertLimitResult
(
array
(
4
,
3
),
$sql
,
2
,
0
);
$this
->
assertLimitResult
(
array
(
2
,
1
),
$sql
,
2
,
2
);
}
public
function
testModifyLimitQueryGroupBy
()
{
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
1
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
2
));
$this
->
_conn
->
insert
(
'modify_limit_table2'
,
array
(
'test_int'
=>
2
));
$sql
=
"SELECT modify_limit_table.test_int FROM modify_limit_table "
.
"INNER JOIN modify_limit_table2 ON modify_limit_table.test_int = modify_limit_table2.test_int "
.
"GROUP BY modify_limit_table.test_int"
;
$this
->
assertLimitResult
(
array
(
1
,
2
),
$sql
,
10
,
0
);
$this
->
assertLimitResult
(
array
(
1
),
$sql
,
1
,
0
);
$this
->
assertLimitResult
(
array
(
2
),
$sql
,
1
,
1
);
}
public
function
assertLimitResult
(
$expectedResults
,
$sql
,
$limit
,
$offset
)
{
$p
=
$this
->
_conn
->
getDatabasePlatform
();
$data
=
array
();
foreach
(
$this
->
_conn
->
fetchAll
(
$p
->
modifyLimitQuery
(
$sql
,
$limit
,
$offset
))
AS
$row
)
{
$data
[]
=
current
(
$row
);
}
$this
->
assertEquals
(
$expectedResults
,
$data
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment