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
c30eae62
Commit
c30eae62
authored
May 29, 2013
by
Gevik Babakhani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added initial unit testing files for the pgsql driver.
parent
647a1587
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
144 additions
and
150 deletions
+144
-150
Schema.php
framework/yii/db/pgsql/Schema.php
+37
-0
config.php
tests/unit/data/config.php
+6
-0
postgres.sql
tests/unit/data/postgres.sql
+69
-150
PostgreSQLActiveRecordTest.php
tests/unit/framework/db/pgsql/PostgreSQLActiveRecordTest.php
+14
-0
PostgreSQLConnectionTest.php
tests/unit/framework/db/pgsql/PostgreSQLConnectionTest.php
+18
-0
No files found.
framework/yii/db/pgsql/Schema.php
0 → 100644
View file @
c30eae62
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace
yii\db\pgsql
;
use
yii\db\TableSchema
;
use
yii\db\ColumnSchema
;
/**
* Schema is the class for retrieving metadata from a PostgreSQL database (version 9.x and above).
*
* @author Gevik Babakhani <gevikb@gmail.com>
* @since 2.0
*/
class
Schema
extends
\yii\db\Schema
{
/**
* Loads the metadata for the specified table.
* @param string $name table name
* @return TableSchema|null driver dependent table metadata. Null if the table does not exist.
*/
public
function
loadTableSchema
(
$name
)
{
$table
=
new
TableSchema
();
$this
->
resolveTableNames
(
$table
,
$name
);
$this
->
findPrimaryKeys
(
$table
);
if
(
$this
->
findColumns
(
$table
))
{
$this
->
findForeignKeys
(
$table
);
return
$table
;
}
}
}
\ No newline at end of file
tests/unit/data/config.php
View file @
c30eae62
...
@@ -20,5 +20,11 @@ return array(
...
@@ -20,5 +20,11 @@ return array(
'password'
=>
''
,
'password'
=>
''
,
'fixture'
=>
__DIR__
.
'/mssql.sql'
,
'fixture'
=>
__DIR__
.
'/mssql.sql'
,
),
),
'pgsql'
=>
array
(
'dsn'
=>
'pgsql:host=localhost;dbname=yiitest;port=5432'
,
'username'
=>
'postgres'
,
'password'
=>
'postgres'
,
'fixture'
=>
__DIR__
.
'/postgres.sql'
,
)
)
)
);
);
tests/unit/data/postgres.sql
View file @
c30eae62
/**
/**
* This is the database schema for testing PostgreSQL support of yii Active Record.
* This is the database schema for testing PostgreSQL support of yii Active Record.
* To test this feature, you need to create a database named 'yii' on 'localhost'
* To test this feature, you need to create a database named 'yii
test
' on 'localhost'
* and create an account '
test/test
' which owns this test database.
* and create an account '
postgres/postgres
' which owns this test database.
*/
*/
CREATE
SCHEMA
test
;
CREATE
TABLE
test
.
users
DROP
TABLE
IF
EXISTS
tbl_order_item
CASCADE
;
(
DROP
TABLE
IF
EXISTS
tbl_item
CASCADE
;
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
DROP
TABLE
IF
EXISTS
tbl_order
CASCADE
;
username
VARCHAR
(
128
)
NOT
NULL
,
DROP
TABLE
IF
EXISTS
tbl_category
CASCADE
;
password
VARCHAR
(
128
)
NOT
NULL
,
DROP
TABLE
IF
EXISTS
tbl_customer
CASCADE
;
email
VARCHAR
(
128
)
NOT
NULL
DROP
TABLE
IF
EXISTS
tbl_type
CASCADE
;
CREATE
TABLE
tbl_customer
(
id
serial
not
null
primary
key
,
email
varchar
(
128
)
NOT
NULL
,
name
varchar
(
128
)
NOT
NULL
,
address
text
,
status
integer
DEFAULT
0
);
);
INSERT
INTO
test
.
users
(
username
,
password
,
email
)
VALUES
(
'user1'
,
'pass1'
,
'email1'
);
CREATE
TABLE
tbl_category
(
INSERT
INTO
test
.
users
(
username
,
password
,
email
)
VALUES
(
'user2'
,
'pass2'
,
'email2'
);
id
serial
not
null
primary
key
,
INSERT
INTO
test
.
users
(
username
,
password
,
email
)
VALUES
(
'user3'
,
'pass3'
,
'email3'
);
name
varchar
(
128
)
NOT
NULL
CREATE
TABLE
test
.
user_friends
(
id
INTEGER
NOT
NULL
,
friend
INTEGER
NOT
NULL
,
PRIMARY
KEY
(
id
,
friend
),
CONSTRAINT
FK_user_id
FOREIGN
KEY
(
id
)
REFERENCES
test
.
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
,
CONSTRAINT
FK_friend_id
FOREIGN
KEY
(
friend
)
REFERENCES
test
.
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
test
.
user_friends
VALUES
(
1
,
2
);
INSERT
INTO
test
.
user_friends
VALUES
(
1
,
3
);
INSERT
INTO
test
.
user_friends
VALUES
(
2
,
3
);
CREATE
TABLE
test
.
profiles
(
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
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
test
.
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
);
INSERT
INTO
test
.
profiles
(
first_name
,
last_name
,
user_id
)
VALUES
(
'first 1'
,
'last 1'
,
1
);
CREATE
TABLE
tbl_item
(
INSERT
INTO
test
.
profiles
(
first_name
,
last_name
,
user_id
)
VALUES
(
'first 2'
,
'last 2'
,
2
);
id
serial
not
null
primary
key
,
name
varchar
(
128
)
NOT
NULL
,
CREATE
TABLE
test
.
posts
category_id
integer
NOT
NULL
references
tbl_category
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
(
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
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
test
.
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
);
INSERT
INTO
test
.
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 1'
,
TIMESTAMP
'2004-10-19 10:23:54'
,
1
,
'content 1'
);
CREATE
TABLE
tbl_order
(
INSERT
INTO
test
.
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 2'
,
TIMESTAMP
'2004-10-19 10:23:54'
,
2
,
'content 2'
);
id
serial
not
null
primary
key
,
INSERT
INTO
test
.
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 3'
,
TIMESTAMP
'2004-10-19 10:23:54'
,
2
,
'content 3'
);
customer_id
integer
NOT
NULL
references
tbl_customer
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
,
INSERT
INTO
test
.
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 4'
,
TIMESTAMP
'2004-10-19 10:23:54'
,
2
,
'content 4'
);
create_time
integer
NOT
NULL
,
INSERT
INTO
test
.
posts
(
title
,
create_time
,
author_id
,
content
)
VALUES
(
'post 5'
,
TIMESTAMP
'2004-10-19 10:23:54'
,
3
,
'content 5'
);
total
decimal
(
10
,
0
)
NOT
NULL
CREATE
TABLE
test
.
comments
(
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
content
TEXT
NOT
NULL
,
post_id
INTEGER
NOT
NULL
,
author_id
INTEGER
NOT
NULL
,
CONSTRAINT
FK_post_comment
FOREIGN
KEY
(
post_id
)
REFERENCES
test
.
posts
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
,
CONSTRAINT
FK_user_comment
FOREIGN
KEY
(
author_id
)
REFERENCES
test
.
users
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
);
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 1'
,
1
,
2
);
CREATE
TABLE
tbl_order_item
(
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 2'
,
1
,
2
);
order_id
integer
NOT
NULL
references
tbl_order
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
,
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 3'
,
1
,
2
);
item_id
integer
NOT
NULL
references
tbl_item
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
,
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 4'
,
2
,
2
);
quantity
integer
NOT
NULL
,
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 5'
,
2
,
2
);
subtotal
decimal
(
10
,
0
)
NOT
NULL
,
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 6'
,
3
,
2
);
PRIMARY
KEY
(
order_id
,
item_id
)
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 7'
,
3
,
2
);
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 8'
,
3
,
2
);
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 9'
,
3
,
2
);
INSERT
INTO
test
.
comments
(
content
,
post_id
,
author_id
)
VALUES
(
'comment 10'
,
5
,
3
);
CREATE
TABLE
test
.
categories
(
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
name
VARCHAR
(
128
)
NOT
NULL
,
parent_id
INTEGER
,
CONSTRAINT
FK_category_category
FOREIGN
KEY
(
parent_id
)
REFERENCES
test
.
categories
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
);
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 1'
,
NULL
);
CREATE
TABLE
tbl_type
(
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 2'
,
NULL
);
int_col
integer
NOT
NULL
,
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 3'
,
NULL
);
int_col2
integer
DEFAULT
'1'
,
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 4'
,
1
);
char_col
char
(
100
)
NOT
NULL
,
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 5'
,
1
);
char_col2
varchar
(
100
)
DEFAULT
'something'
,
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 6'
,
5
);
char_col3
text
,
INSERT
INTO
test
.
categories
(
name
,
parent_id
)
VALUES
(
'cat 7'
,
5
);
float_col
double
precision
NOT
NULL
,
float_col2
double
precision
DEFAULT
'1.23'
,
CREATE
TABLE
test
.
post_category
blob_col
bytea
,
(
numeric_col
decimal
(
5
,
2
)
DEFAULT
'33.22'
,
category_id
INTEGER
NOT
NULL
,
time
timestamp
NOT
NULL
DEFAULT
'2002-01-01 00:00:00'
,
post_id
INTEGER
NOT
NULL
,
bool_col
smallint
NOT
NULL
,
PRIMARY
KEY
(
category_id
,
post_id
),
bool_col2
smallint
DEFAULT
'1'
CONSTRAINT
FK_post_category_post
FOREIGN
KEY
(
post_id
)
REFERENCES
test
.
posts
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
,
CONSTRAINT
FK_post_category_category
FOREIGN
KEY
(
category_id
)
REFERENCES
test
.
categories
(
id
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
1
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user1@example.com'
,
'user1'
,
'address1'
,
1
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
2
,
1
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user2@example.com'
,
'user2'
,
'address2'
,
1
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
3
,
1
);
INSERT
INTO
tbl_customer
(
email
,
name
,
address
,
status
)
VALUES
(
'user3@example.com'
,
'user3'
,
'address3'
,
2
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
4
,
2
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
2
);
INSERT
INTO
tbl_category
(
name
)
VALUES
(
'Books'
);
INSERT
INTO
test
.
post_category
(
category_id
,
post_id
)
VALUES
(
1
,
3
);
INSERT
INTO
tbl_category
(
name
)
VALUES
(
'Movies'
);
CREATE
TABLE
test
.
orders
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
);
key1
INTEGER
NOT
NULL
,
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Ice Age'
,
2
);
key2
INTEGER
NOT
NULL
,
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Toy Story'
,
2
);
name
VARCHAR
(
128
),
INSERT
INTO
tbl_item
(
name
,
category_id
)
VALUES
(
'Cars'
,
2
);
PRIMARY
KEY
(
key1
,
key2
)
);
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
test
.
orders
(
key1
,
key2
,
name
)
VALUES
(
1
,
2
,
'order 12'
);
INSERT
INTO
tbl_order
(
customer_id
,
create_time
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
test
.
orders
(
key1
,
key2
,
name
)
VALUES
(
1
,
3
,
'order 13'
);
INSERT
INTO
test
.
orders
(
key1
,
key2
,
name
)
VALUES
(
2
,
1
,
'order 21'
);
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
test
.
orders
(
key1
,
key2
,
name
)
VALUES
(
2
,
2
,
'order 22'
);
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
);
CREATE
TABLE
test
.
items
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
);
id
SERIAL
NOT
NULL
PRIMARY
KEY
,
INSERT
INTO
tbl_order_item
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
name
VARCHAR
(
128
),
col1
INTEGER
NOT
NULL
,
col2
INTEGER
NOT
NULL
,
CONSTRAINT
FK_order_item
FOREIGN
KEY
(
col1
,
col2
)
REFERENCES
test
.
orders
(
key1
,
key2
)
ON
DELETE
CASCADE
ON
UPDATE
RESTRICT
);
INSERT
INTO
test
.
items
(
name
,
col1
,
col2
)
VALUES
(
'item 1'
,
1
,
2
);
INSERT
INTO
test
.
items
(
name
,
col1
,
col2
)
VALUES
(
'item 2'
,
1
,
2
);
INSERT
INTO
test
.
items
(
name
,
col1
,
col2
)
VALUES
(
'item 3'
,
1
,
3
);
INSERT
INTO
test
.
items
(
name
,
col1
,
col2
)
VALUES
(
'item 4'
,
2
,
2
);
INSERT
INTO
test
.
items
(
name
,
col1
,
col2
)
VALUES
(
'item 5'
,
2
,
2
);
CREATE
TABLE
public
.
yii_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
,
numeric_col
NUMERIC
(
4
,
3
)
NOT
NULL
,
real_col
REAL
DEFAULT
1
.
23
,
blob_col
BYTEA
,
time
TIMESTAMP
,
bool_col
BOOL
NOT
NULL
,
bool_col2
BOOLEAN
DEFAULT
TRUE
);
\ No newline at end of file
tests/unit/framework/db/pgsql/PostgreSQLActiveRecordTest.php
0 → 100644
View file @
c30eae62
<?php
namespace
yiiunit\framework\db\pgsql
;
use
yiiunit\framework\db\ActiveRecordTest
;
class
PostgreSQLActiveRecordTest
extends
ActiveRecordTest
{
protected
function
setUp
()
{
$this
->
driverName
=
'pgsql'
;
parent
::
setUp
();
}
}
tests/unit/framework/db/pgsql/PostgreSQLConnectionTest.php
0 → 100644
View file @
c30eae62
<?php
namespace
yiiunit\framework\db\pgsql
;
use
yiiunit\framework\db\ConnectionTest
;
class
PostgreSQLConnectionTest
extends
ConnectionTest
{
public
function
setUp
()
{
$this
->
driverName
=
'pgsql'
;
parent
::
setUp
();
}
public
function
testConnection
()
{
$connection
=
$this
->
getConnection
(
true
);
}
}
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