Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Rotua Panjaitan
yii2
Commits
d712605a
Commit
d712605a
authored
May 09, 2013
by
Rusinov Maxim
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added and resolved Sqlite tests #15.
parent
aad6d7d9
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
262 additions
and
277 deletions
+262
-277
.travis.yml
.travis.yml
+1
-0
Schema.php
framework/db/sqlite/Schema.php
+1
-1
DatabaseTestCase.php
tests/unit/DatabaseTestCase.php
+51
-0
config.php
tests/unit/data/config.php
+6
-0
mysql.sql
tests/unit/data/mysql.sql
+1
-5
sqlite.sql
tests/unit/data/sqlite.sql
+88
-261
DbCacheTest.php
tests/unit/framework/caching/DbCacheTest.php
+2
-1
ActiveRecordTest.php
tests/unit/framework/db/ActiveRecordTest.php
+2
-1
CommandTest.php
tests/unit/framework/db/CommandTest.php
+1
-1
ConnectionTest.php
tests/unit/framework/db/ConnectionTest.php
+5
-6
QueryTest.php
tests/unit/framework/db/QueryTest.php
+1
-1
SqliteActiveRecordTest.php
tests/unit/framework/db/sqlite/SqliteActiveRecordTest.php
+13
-0
SqliteCommandTest.php
tests/unit/framework/db/sqlite/SqliteCommandTest.php
+22
-0
SqliteConnectionTest.php
tests/unit/framework/db/sqlite/SqliteConnectionTest.php
+47
-0
SqliteQueryTest.php
tests/unit/framework/db/sqlite/SqliteQueryTest.php
+21
-0
No files found.
.travis.yml
View file @
d712605a
...
...
@@ -7,6 +7,7 @@ php:
env
:
-
DB=mysql
-
DB=sqlite
before_script
:
-
sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS yiitest;'; fi"
...
...
framework/db/sqlite/Schema.php
View file @
d712605a
...
...
@@ -169,7 +169,7 @@ class Schema extends \yii\db\Schema
}
}
}
$column
->
phpType
=
$this
->
getColumnPhpType
(
$
this
->
type
);
$column
->
phpType
=
$this
->
getColumnPhpType
(
$
column
);
$value
=
$info
[
'dflt_value'
];
if
(
$column
->
type
===
'string'
)
{
...
...
tests/unit/DatabaseTestCase.php
0 → 100644
View file @
d712605a
<?php
namespace
yiiunit
;
class
DatabaseTestCase
extends
TestCase
{
protected
$database
;
protected
$driverName
=
'mysql'
;
protected
$db
;
protected
function
setUp
()
{
$databases
=
$this
->
getParam
(
'databases'
);
$this
->
database
=
$databases
[
$this
->
driverName
];
$pdo_database
=
'pdo_'
.
$this
->
driverName
;
if
(
!
extension_loaded
(
'pdo'
)
||
!
extension_loaded
(
$pdo_database
))
{
$this
->
markTestSkipped
(
'pdo and pdo_'
.
$pdo_database
.
' extension are required.'
);
}
}
/**
* @param bool $reset whether to clean up the test database
* @param bool $open whether to open and populate test database
* @return \yii\db\Connection
*/
public
function
getConnection
(
$reset
=
true
,
$open
=
true
)
{
if
(
!
$reset
&&
$this
->
db
)
{
return
$this
->
db
;
}
$db
=
new
\yii\db\Connection
;
$db
->
dsn
=
$this
->
database
[
'dsn'
];
if
(
isset
(
$this
->
database
[
'username'
]))
{
$db
->
username
=
$this
->
database
[
'username'
];
$db
->
password
=
$this
->
database
[
'password'
];
}
if
(
$open
)
{
$db
->
open
();
$lines
=
explode
(
';'
,
file_get_contents
(
$this
->
database
[
'fixture'
]));
foreach
(
$lines
as
$line
)
{
if
(
trim
(
$line
)
!==
''
)
{
$db
->
pdo
->
exec
(
$line
);
}
}
}
$this
->
db
=
$db
;
return
$db
;
}
}
\ No newline at end of file
tests/unit/data/config.php
View file @
d712605a
<?php
return
array
(
'databases'
=>
array
(
'mysql'
=>
array
(
'dsn'
=>
'mysql:host=127.0.0.1;dbname=yiitest'
,
'username'
=>
'travis'
,
'password'
=>
''
,
'fixture'
=>
__DIR__
.
'/mysql.sql'
,
),
'sqlite'
=>
array
(
'dsn'
=>
'sqlite::memory:'
,
'fixture'
=>
__DIR__
.
'/sqlite.sql'
,
),
)
);
tests/unit/data/mysql.sql
View file @
d712605a
/**
* This is the database schema for testing MySQL support of Yii DAO and Active Record.
* The following database setup is required to perform then relevant tests:
* Database name: yiitest
* username: test
* password: test
* charset: utf8
* The database setup in config.php is required to perform then relevant tests:
*/
DROP
TABLE
IF
EXISTS
tbl_order_item
CASCADE
;
...
...
tests/unit/data/sqlite.sql
View file @
d712605a
CREATE
TABLE
users
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
,
username
VARCHAR
(
128
)
NOT
NULL
,
password
VARCHAR
(
128
)
NOT
NULL
,
email
VARCHAR
(
128
)
NOT
NULL
);
INSERT
INTO
users
(
id
,
username
,
password
,
email
)
VALUES
(
1
,
'user1'
,
'pass1'
,
'email1'
);
INSERT
INTO
users
(
id
,
username
,
password
,
email
)
VALUES
(
2
,
'user2'
,
'pass2'
,
'email2'
);
INSERT
INTO
users
(
id
,
username
,
password
,
email
)
VALUES
(
3
,
'user3'
,
'pass3'
,
'email3'
);
INSERT
INTO
users
(
id
,
username
,
password
,
email
)
VALUES
(
4
,
'user4'
,
'pass4'
,
'email4'
);
CREATE
TABLE
groups
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
,
name
VARCHAR
(
128
)
NOT
NULL
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
1
,
'group1'
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
2
,
'group2'
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
3
,
'group3'
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
4
,
'group4'
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
5
,
'group5'
);
INSERT
INTO
groups
(
id
,
name
)
VALUES
(
6
,
'group6'
);
CREATE
TABLE
groups_descriptions
(
group_id
INTEGER
NOT
NULL
PRIMARY
KEY
,
name
VARCHAR
(
128
)
NOT
NULL
);
INSERT
INTO
groups_descriptions
(
group_id
,
name
)
VALUES
(
1
,
'room1'
);
INSERT
INTO
groups_descriptions
(
group_id
,
name
)
VALUES
(
2
,
'room2'
);
INSERT
INTO
groups_descriptions
(
group_id
,
name
)
VALUES
(
3
,
'room3'
);
INSERT
INTO
groups_descriptions
(
group_id
,
name
)
VALUES
(
4
,
'room4'
);
CREATE
TABLE
roles
(
user_id
INTEGER
NOT
NULL
,
group_id
INTEGER
NOT
NULL
,
name
VARCHAR
(
128
)
NOT
NULL
,
PRIMARY
KEY
(
user_id
,
group_id
)
);
INSERT
INTO
roles
(
user_id
,
group_id
,
name
)
VALUES
(
1
,
1
,
'dev'
);
INSERT
INTO
roles
(
user_id
,
group_id
,
name
)
VALUES
(
1
,
2
,
'user'
);
INSERT
INTO
roles
(
user_id
,
group_id
,
name
)
VALUES
(
2
,
1
,
'dev'
);
INSERT
INTO
roles
(
user_id
,
group_id
,
name
)
VALUES
(
2
,
3
,
'user'
);
CREATE
TABLE
mentorships
(
teacher_id
INTEGER
NOT
NULL
,
student_id
INTEGER
NOT
NULL
,
progress
VARCHAR
(
128
)
NOT
NULL
,
PRIMARY
KEY
(
teacher_id
,
student_id
)
);
INSERT
INTO
mentorships
(
teacher_id
,
student_id
,
progress
)
VALUES
(
1
,
3
,
'good'
);
INSERT
INTO
mentorships
(
teacher_id
,
student_id
,
progress
)
VALUES
(
2
,
4
,
'average'
);
CREATE
TABLE
profiles
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
first_name
VARCHAR
(
128
)
NOT
NULL
,
last_name
VARCHAR
(
128
)
NOT
NULL
,
user_id
INTEGER
NOT
NULL
,
CONSTRAINT
FK_profile_user
FOREIGN
KEY
(
user_id
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
profiles
(
first_name
,
last_name
,
user_id
)
VALUES
(
'first 1'
,
'last 1'
,
1
);
INSERT
INTO
profiles
(
first_name
,
last_name
,
user_id
)
VALUES
(
'first 2'
,
'last 2'
,
2
);
CREATE
TABLE
posts
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
title
VARCHAR
(
128
)
NOT
NULL
,
create_time
TIMESTAMP
NOT
NULL
,
author_id
INTEGER
NOT
NULL
,
content
TEXT
,
CONSTRAINT
FK_post_author
FOREIGN
KEY
(
author_id
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 1'
,
100000
,
1
,
'content 1'
);
INSERT
INTO
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 2'
,
100001
,
2
,
'content 2'
);
INSERT
INTO
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 3'
,
100002
,
2
,
'content 3'
);
INSERT
INTO
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 4'
,
100003
,
2
,
'content 4'
);
INSERT
INTO
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 5'
,
100004
,
3
,
'content 5'
);
CREATE
TABLE
posts_nofk
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
title
VARCHAR
(
128
)
NOT
NULL
,
create_time
TIMESTAMP
NOT
NULL
,
author_id
INTEGER
NOT
NULL
,
content
TEXT
);
INSERT
INTO
posts_nofk
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 1'
,
100000
,
1
,
'content 1'
);
INSERT
INTO
posts_nofk
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 2'
,
100001
,
2
,
'content 2'
);
INSERT
INTO
posts_nofk
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 3'
,
100002
,
2
,
'content 3'
);
INSERT
INTO
posts_nofk
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 4'
,
100003
,
2
,
'content 4'
);
INSERT
INTO
posts_nofk
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 5'
,
100004
,
3
,
'content 5'
);
CREATE
TABLE
comments
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
content
TEXT
NOT
NULL
,
post_id
INTEGER
NOT
NULL
,
author_id
INTEGER
NOT
NULL
,
CONSTRAINT
FK_post_comment
FOREIGN
KEY
(
post_id
)
REFERENCES
posts
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
,
CONSTRAINT
FK_user_comment
FOREIGN
KEY
(
author_id
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 1'
,
1
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 2'
,
1
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 3'
,
1
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 4'
,
2
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 5'
,
2
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 6'
,
3
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 7'
,
3
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 8'
,
3
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 9'
,
3
,
2
);
INSERT
INTO
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 10'
,
5
,
3
);
CREATE
TABLE
categories
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
name
VARCHAR
(
128
)
NOT
NULL
,
parent_id
INTEGER
,
CONSTRAINT
FK_category_category
FOREIGN
KEY
(
parent_id
)
REFERENCES
categories
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 1'
,
NULL
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 2'
,
NULL
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 3'
,
NULL
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 4'
,
1
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 5'
,
1
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 6'
,
5
);
INSERT
INTO
categories
(
name
,
parent_id
)
VALUES
(
'cat 7'
,
5
);
CREATE
TABLE
post_category
(
/**
* This is the database schema for testing Sqlite support of Yii DAO and Active Record.
* The database setup in config.php is required to perform then relevant tests:
*/
DROP
TABLE
IF
EXISTS
tbl_order_item
;
DROP
TABLE
IF
EXISTS
tbl_item
;
DROP
TABLE
IF
EXISTS
tbl_order
;
DROP
TABLE
IF
EXISTS
tbl_category
;
DROP
TABLE
IF
EXISTS
tbl_customer
;
DROP
TABLE
IF
EXISTS
tbl_type
;
CREATE
TABLE
tbl_customer
(
id
INTEGER
NOT
NULL
,
email
varchar
(
128
)
NOT
NULL
,
name
varchar
(
128
)
NOT
NULL
,
address
text
,
status
INTEGER
DEFAULT
0
,
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
tbl_category
(
id
INTEGER
NOT
NULL
,
name
varchar
(
128
)
NOT
NULL
,
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
tbl_item
(
id
INTEGER
NOT
NULL
,
name
varchar
(
128
)
NOT
NULL
,
category_id
INTEGER
NOT
NULL
,
post_id
INTEGER
NOT
NULL
,
PRIMARY
KEY
(
category_id
,
post_id
),
CONSTRAINT
FK_post_category_post
FOREIGN
KEY
(
post_id
)
REFERENCES
posts
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
,
CONSTRAINT
FK_post_category_category
FOREIGN
KEY
(
category_id
)
REFERENCES
categories
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
1
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
2
,
1
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
3
,
1
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
4
,
2
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
2
);
INSERT
INTO
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
3
);
CREATE
TABLE
orders
(
key1
INTEGER
NOT
NULL
,
key2
INTEGER
NOT
NULL
,
name
VARCHAR
(
128
),
PRIMARY
KEY
(
key1
,
key2
)
);
INSERT
INTO
orders
(
key1
,
key2
,
name
)
VALUES
(
1
,
2
,
'order 12'
);
INSERT
INTO
orders
(
key1
,
key2
,
name
)
VALUES
(
1
,
3
,
'order 13'
);
INSERT
INTO
orders
(
key1
,
key2
,
name
)
VALUES
(
2
,
1
,
'order 21'
);
INSERT
INTO
orders
(
key1
,
key2
,
name
)
VALUES
(
2
,
2
,
'order 22'
);
CREATE
TABLE
items
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
name
VARCHAR
(
128
),
col1
INTEGER
NOT
NULL
,
col2
INTEGER
NOT
NULL
,
CONSTRAINT
FK_order_item
FOREIGN
KEY
(
col1
,
col2
)
REFERENCES
orders
(
key1
,
key2
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
items
(
name
,
col1
,
col2
)
VALUES
(
'item 1'
,
1
,
2
);
INSERT
INTO
items
(
name
,
col1
,
col2
)
VALUES
(
'item 2'
,
1
,
2
);
INSERT
INTO
items
(
name
,
col1
,
col2
)
VALUES
(
'item 3'
,
1
,
3
);
INSERT
INTO
items
(
name
,
col1
,
col2
)
VALUES
(
'item 4'
,
2
,
2
);
INSERT
INTO
items
(
name
,
col1
,
col2
)
VALUES
(
'item 5'
,
2
,
2
);
CREATE
TABLE
types
(
int_col
INT
NOT
NULL
,
int_col2
INTEGER
DEFAULT
1
,
char_col
CHAR
(
100
)
NOT
NULL
,
char_col2
VARCHAR
(
100
)
DEFAULT
'something'
,
char_col3
TEXT
,
float_col
REAL
(
4
,
3
)
NOT
NULL
,
float_col2
DOUBLE
DEFAULT
1
.
23
,
blob_col
BLOB
,
numeric_col
NUMERIC
(
5
,
2
)
DEFAULT
33
.
22
,
time
TIMESTAMP
DEFAULT
123
,
bool_col
BOOL
NOT
NULL
,
bool_col2
BOOLEAN
DEFAULT
1
,
null_col
INTEGER
DEFAULT
NULL
);
CREATE
TABLE
Content
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
AUTOINCREMENT
,
class
VARCHAR
(
128
),
parentID
INTEGER
NOT
NULL
,
ownerID
INTEGER
NOT
NULL
,
title
VARCHAR
(
100
),
CONSTRAINT
FK_content_user
FOREIGN
KEY
(
ownerID
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
CONSTRAINT
FK_content_parent
FOREIGN
KEY
(
parentID
)
REFERENCES
Content
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Article'
,
-
1
,
1
,
'article 1'
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Article'
,
-
1
,
2
,
'article 2'
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Comment'
,
1
,
1
,
'comment 1'
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Article'
,
-
1
,
2
,
'article 3'
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Comment'
,
4
,
2
,
'comment 2'
);
INSERT
INTO
Content
(
class
,
parentID
,
ownerID
,
title
)
VALUES
(
'Comment'
,
4
,
1
,
'comment 3'
);
CREATE
TABLE
Article
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
,
authorID
INTEGER
NOT
NULL
,
body
TEXT
,
CONSTRAINT
FK_article_content
FOREIGN
KEY
(
id
)
REFERENCES
Content
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
CONSTRAINT
FK_article_author
FOREIGN
KEY
(
authorID
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
Article
(
id
,
authorID
,
body
)
VALUES
(
1
,
1
,
'content for article 1'
);
INSERT
INTO
Article
(
id
,
authorID
,
body
)
VALUES
(
2
,
2
,
'content for article 2'
);
INSERT
INTO
Article
(
id
,
authorID
,
body
)
VALUES
(
4
,
1
,
'content for article 3'
);
CREATE
TABLE
Comment
(
id
INTEGER
NOT
NULL
PRIMARY
KEY
,
authorID
INTEGER
NOT
NULL
,
body
TEXT
,
CONSTRAINT
FK_comment_content
FOREIGN
KEY
(
id
)
REFERENCES
Content
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
CONSTRAINT
FK_article_author
FOREIGN
KEY
(
authorID
)
REFERENCES
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
Comment
(
id
,
authorID
,
body
)
VALUES
(
3
,
1
,
'content for comment 1'
);
INSERT
INTO
Comment
(
id
,
authorID
,
body
)
VALUES
(
5
,
1
,
'content for comment 2'
);
INSERT
INTO
Comment
(
id
,
authorID
,
body
)
VALUES
(
6
,
1
,
'content for comment 3'
);
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
tbl_order
(
id
INTEGER
NOT
NULL
,
customer_id
INTEGER
NOT
NULL
,
create_time
INTEGER
NOT
NULL
,
total
decimal
(
10
,
0
)
NOT
NULL
,
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
tbl_order_item
(
order_id
INTEGER
NOT
NULL
,
item_id
INTEGER
NOT
NULL
,
quantity
INTEGER
NOT
NULL
,
subtotal
decimal
(
10
,
0
)
NOT
NULL
,
PRIMARY
KEY
(
order_id
,
item_id
)
);
CREATE
TABLE
tbl_type
(
int_col
INTEGER
NOT
NULL
,
int_col2
INTEGER
DEFAULT
'1'
,
char_col
char
(
100
)
NOT
NULL
,
char_col2
varchar
(
100
)
DEFAULT
'something'
,
char_col3
text
,
float_col
double
(
4
,
3
)
NOT
NULL
,
float_col2
double
DEFAULT
'1.23'
,
blob_col
blob
,
numeric_col
decimal
(
5
,
2
)
DEFAULT
'33.22'
,
time
timestamp
NOT
NULL
DEFAULT
'2002-01-01 00:00:00'
,
bool_col
tinyint
(
1
)
NOT
NULL
,
bool_col2
tinyint
(
1
)
DEFAULT
'1'
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user1@example.com'
,
'user1'
,
'address1'
,
1
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user2@example.com'
,
'user2'
,
'address2'
,
1
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user3@example.com'
,
'user3'
,
'address3'
,
2
);
INSERT
INTO
tbl_category
(
name
)
VALUES
(
'Books'
);
INSERT
INTO
tbl_category
(
name
)
VALUES
(
'Movies'
);
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Agile Web Application Development with Yii1.1 and PHP5'
,
1
);
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Yii 1.1 Application Development Cookbook'
,
1
);
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Ice Age'
,
2
);
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Toy Story'
,
2
);
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Cars'
,
2
);
INSERT
INTO
tbl_order
(
customer_id
,
create_time
,
total
)
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
tbl_order
(
customer_id
,
create_time
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
tbl_order
(
customer_id
,
create_time
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
\ No newline at end of file
tests/unit/framework/caching/DbCacheTest.php
View file @
d712605a
...
...
@@ -35,7 +35,8 @@ class DbCacheTest extends CacheTest
function
getConnection
(
$reset
=
true
)
{
if
(
$this
->
_connection
===
null
)
{
$params
=
$this
->
getParam
(
'mysql'
);
$databases
=
$this
->
getParam
(
'databases'
);
$params
=
$databases
[
'mysql'
];
$db
=
new
\yii\db\Connection
;
$db
->
dsn
=
$params
[
'dsn'
];
$db
->
username
=
$params
[
'username'
];
...
...
tests/unit/framework/db/ActiveRecordTest.php
View file @
d712605a
...
...
@@ -10,10 +10,11 @@ use yiiunit\data\ar\OrderItem;
use
yiiunit\data\ar\Order
;
use
yiiunit\data\ar\Item
;
class
ActiveRecordTest
extends
\yiiunit\
Mysql
TestCase
class
ActiveRecordTest
extends
\yiiunit\
Database
TestCase
{
public
function
setUp
()
{
parent
::
setUp
();
ActiveRecord
::
$db
=
$this
->
getConnection
();
}
...
...
tests/unit/framework/db/CommandTest.php
View file @
d712605a
...
...
@@ -7,7 +7,7 @@ use yii\db\Command;
use
yii\db\Query
;
use
yii\db\DataReader
;
class
CommandTest
extends
\yiiunit\
Mysql
TestCase
class
CommandTest
extends
\yiiunit\
Database
TestCase
{
function
testConstruct
()
{
...
...
tests/unit/framework/db/ConnectionTest.php
View file @
d712605a
...
...
@@ -4,12 +4,12 @@ namespace yiiunit\framework\db;
use
yii\db\Connection
;
class
ConnectionTest
extends
\yiiunit\
Mysql
TestCase
class
ConnectionTest
extends
\yiiunit\
Database
TestCase
{
function
testConstruct
()
{
$connection
=
$this
->
getConnection
(
false
);
$params
=
$this
->
getParam
(
'mysql'
)
;
$params
=
$this
->
database
;
$this
->
assertEquals
(
$params
[
'dsn'
],
$connection
->
dsn
);
$this
->
assertEquals
(
$params
[
'username'
],
$connection
->
username
);
...
...
@@ -18,7 +18,7 @@ class ConnectionTest extends \yiiunit\MysqlTestCase
function
testOpenClose
()
{
$connection
=
$this
->
getConnection
(
false
);
$connection
=
$this
->
getConnection
(
false
,
false
);
$this
->
assertFalse
(
$connection
->
isActive
);
$this
->
assertEquals
(
null
,
$connection
->
pdo
);
...
...
@@ -39,9 +39,8 @@ class ConnectionTest extends \yiiunit\MysqlTestCase
function
testGetDriverName
()
{
$connection
=
$this
->
getConnection
(
false
);
$this
->
assertEquals
(
'mysql'
,
$connection
->
driverName
);
$this
->
assertFalse
(
$connection
->
isActive
);
$connection
=
$this
->
getConnection
(
false
,
false
);
$this
->
assertEquals
(
$this
->
driverName
,
$connection
->
driverName
);
}
function
testQuoteValue
()
...
...
tests/unit/framework/db/QueryTest.php
View file @
d712605a
...
...
@@ -7,7 +7,7 @@ use yii\db\Command;
use
yii\db\Query
;
use
yii\db\DataReader
;
class
QueryTest
extends
\yiiunit\
Mysql
TestCase
class
QueryTest
extends
\yiiunit\
Database
TestCase
{
function
testSelect
()
{
...
...
tests/unit/framework/db/sqlite/SqliteActiveRecordTest.php
0 → 100644
View file @
d712605a
<?php
namespace
yiiunit\framework\db\sqlite
;
class
SqliteActiveRecordTest
extends
\yiiunit\framework\db\ActiveRecordTest
{
public
function
setUp
()
{
$this
->
driverName
=
'sqlite'
;
parent
::
setUp
();
}
}
\ No newline at end of file
tests/unit/framework/db/sqlite/SqliteCommandTest.php
0 → 100644
View file @
d712605a
<?php
namespace
yiiunit\framework\db\sqlite
;
class
SqliteCommandTest
extends
\yiiunit\framework\db\CommandTest
{
public
function
setUp
()
{
$this
->
driverName
=
'sqlite'
;
parent
::
setUp
();
}
function
testAutoQuoting
()
{
$db
=
$this
->
getConnection
(
false
);
$sql
=
'SELECT [[id]], [[t.name]] FROM {{tbl_customer}} t'
;
$command
=
$db
->
createCommand
(
$sql
);
$this
->
assertEquals
(
"SELECT
\"
id
\"
, 't'.
\"
name
\"
FROM 'tbl_customer' t"
,
$command
->
sql
);
}
}
\ No newline at end of file
tests/unit/framework/db/sqlite/SqliteConnectionTest.php
0 → 100644
View file @
d712605a
<?php
namespace
yiiunit\framework\db\sqlite
;
class
SqliteConnectionTest
extends
\yiiunit\framework\db\ConnectionTest
{
public
function
setUp
()
{
$this
->
driverName
=
'sqlite'
;
parent
::
setUp
();
}
function
testConstruct
()
{
$connection
=
$this
->
getConnection
(
false
);
$params
=
$this
->
database
;
$this
->
assertEquals
(
$params
[
'dsn'
],
$connection
->
dsn
);
}
function
testQuoteValue
()
{
$connection
=
$this
->
getConnection
(
false
);
$this
->
assertEquals
(
123
,
$connection
->
quoteValue
(
123
));
$this
->
assertEquals
(
"'string'"
,
$connection
->
quoteValue
(
'string'
));
$this
->
assertEquals
(
"'It''s interesting'"
,
$connection
->
quoteValue
(
"It's interesting"
));
}
function
testQuoteTableName
()
{
$connection
=
$this
->
getConnection
(
false
);
$this
->
assertEquals
(
"'table'"
,
$connection
->
quoteTableName
(
'table'
));
$this
->
assertEquals
(
"'schema'.'table'"
,
$connection
->
quoteTableName
(
'schema.table'
));
$this
->
assertEquals
(
'{{table}}'
,
$connection
->
quoteTableName
(
'{{table}}'
));
$this
->
assertEquals
(
'(table)'
,
$connection
->
quoteTableName
(
'(table)'
));
}
function
testQuoteColumnName
()
{
$connection
=
$this
->
getConnection
(
false
);
$this
->
assertEquals
(
'"column"'
,
$connection
->
quoteColumnName
(
'column'
));
$this
->
assertEquals
(
"'table'.
\"
column
\"
"
,
$connection
->
quoteColumnName
(
'table.column'
));
$this
->
assertEquals
(
'[[column]]'
,
$connection
->
quoteColumnName
(
'[[column]]'
));
$this
->
assertEquals
(
'{{column}}'
,
$connection
->
quoteColumnName
(
'{{column}}'
));
$this
->
assertEquals
(
'(column)'
,
$connection
->
quoteColumnName
(
'(column)'
));
}
}
tests/unit/framework/db/sqlite/SqliteQueryTest.php
0 → 100644
View file @
d712605a
<?php
/**
* Created by JetBrains PhpStorm.
* User: RusMaxim
* Date: 09.05.13
* Time: 21:41
* To change this template use File | Settings | File Templates.
*/
namespace
yiiunit\framework\db\sqlite
;
class
SqliteQueryTest
extends
\yiiunit\framework\db\QueryTest
{
public
function
setUp
()
{
$this
->
driverName
=
'sqlite'
;
parent
::
setUp
();
}
}
\ 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