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
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
PSDI Army
yii2
Commits
95d2b29b
Commit
95d2b29b
authored
Jun 01, 2014
by
NmDimas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change unit test to Unlink and add test to unlinkAll
parent
5599a86a
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
282 additions
and
4 deletions
+282
-4
Customer.php
tests/unit/data/ar/Customer.php
+4
-0
Order.php
tests/unit/data/ar/Order.php
+13
-0
OrderItemWithNullFK.php
tests/unit/data/ar/OrderItemWithNullFK.php
+20
-0
OrderWithNullFK.php
tests/unit/data/ar/OrderWithNullFK.php
+21
-0
cubrid.sql
tests/unit/data/cubrid.sql
+28
-0
mssql.sql
tests/unit/data/mssql.sql
+26
-0
mysql.sql
tests/unit/data/mysql.sql
+29
-0
postgres.sql
tests/unit/data/postgres.sql
+27
-0
sqlite.sql
tests/unit/data/sqlite.sql
+28
-0
ActiveRecordTestTrait.php
tests/unit/framework/ar/ActiveRecordTestTrait.php
+75
-4
ActiveRecordTest.php
tests/unit/framework/db/ActiveRecordTest.php
+11
-0
No files found.
tests/unit/data/ar/Customer.php
View file @
95d2b29b
...
...
@@ -36,6 +36,10 @@ class Customer extends ActiveRecord
{
return
$this
->
hasMany
(
Order
::
className
(),
[
'customer_id'
=>
'id'
])
->
orderBy
(
'id'
);
}
public
function
getOrdersWithNullFK
()
{
return
$this
->
hasMany
(
OrderWithNullFK
::
className
(),
[
'customer_id'
=>
'id'
])
->
orderBy
(
'id'
);
}
public
function
getOrders2
()
{
...
...
tests/unit/data/ar/Order.php
View file @
95d2b29b
...
...
@@ -40,6 +40,12 @@ class Order extends ActiveRecord
})
->
orderBy
(
'item.id'
);
}
public
function
getItemsWithNullFK
()
{
return
$this
->
hasMany
(
Item
::
className
(),
[
'id'
=>
'item_id'
])
->
viaTable
(
'order_item_with_null_fk'
,
[
'order_id'
=>
'id'
]);
}
public
function
getItemsInOrder1
()
{
return
$this
->
hasMany
(
Item
::
className
(),
[
'id'
=>
'item_id'
])
...
...
@@ -63,6 +69,13 @@ class Order extends ActiveRecord
->
where
([
'category_id'
=>
1
]);
}
public
function
getBooksWithNullFK
()
{
return
$this
->
hasMany
(
Item
::
className
(),
[
'id'
=>
'item_id'
])
->
viaTable
(
'order_item_with_null_fk'
,
[
'order_id'
=>
'id'
])
->
where
([
'category_id'
=>
1
]);
}
public
function
getBooks2
()
{
return
$this
->
hasMany
(
Item
::
className
(),
[
'id'
=>
'item_id'
])
...
...
tests/unit/data/ar/OrderItemWithNullFK.php
0 → 100644
View file @
95d2b29b
<?php
namespace
yiiunit\data\ar
;
/**
* Class OrderItem
*
* @property integer $order_id
* @property integer $item_id
* @property integer $quantity
* @property string $subtotal
*/
class
OrderItemWithNullFK
extends
ActiveRecord
{
public
static
function
tableName
()
{
return
'order_item_with_null_fk'
;
}
}
tests/unit/data/ar/OrderWithNullFK.php
0 → 100644
View file @
95d2b29b
<?php
namespace
yiiunit\data\ar
;
/**
* Class Order
*
* @property integer $id
* @property integer $customer_id
* @property integer $created_at
* @property string $total
*/
class
OrderWithNullFK
extends
ActiveRecord
{
public
static
function
tableName
()
{
return
'order_with_null_fk'
;
}
}
tests/unit/data/cubrid.sql
View file @
95d2b29b
...
...
@@ -5,8 +5,10 @@
DROP
TABLE
IF
EXISTS
`composite_fk`
;
DROP
TABLE
IF
EXISTS
`order_item`
;
DROP
TABLE
IF
EXISTS
`order_item_with_null_fk`
;
DROP
TABLE
IF
EXISTS
`item`
;
DROP
TABLE
IF
EXISTS
`order`
;
DROP
TABLE
IF
EXISTS
`order_with_null_fk`
;
DROP
TABLE
IF
EXISTS
`category`
;
DROP
TABLE
IF
EXISTS
`customer`
;
DROP
TABLE
IF
EXISTS
`profile`
;
...
...
@@ -60,6 +62,14 @@ CREATE TABLE `order` (
CONSTRAINT
`FK_order_customer_id`
FOREIGN
KEY
(
`customer_id`
)
REFERENCES
`customer`
(
`id`
)
ON
DELETE
CASCADE
);
CREATE
TABLE
`order_with_null_fk`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`customer_id`
int
(
11
),
`created_at`
int
(
11
)
NOT
NULL
,
`total`
decimal
(
10
,
0
)
NOT
NULL
,
PRIMARY
KEY
(
`id`
)
);
CREATE
TABLE
`order_item`
(
`order_id`
int
(
11
)
NOT
NULL
,
`item_id`
int
(
11
)
NOT
NULL
,
...
...
@@ -70,6 +80,13 @@ CREATE TABLE `order_item` (
CONSTRAINT
`FK_order_item_item_id`
FOREIGN
KEY
(
`item_id`
)
REFERENCES
`item`
(
`id`
)
ON
DELETE
CASCADE
);
CREATE
TABLE
`order_item_with_null_fk`
(
`order_id`
int
(
11
),
`item_id`
int
(
11
),
`quantity`
int
(
11
)
NOT
NULL
,
`subtotal`
decimal
(
10
,
0
)
NOT
NULL
);
CREATE
TABLE
null_values
(
`id`
INT
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`var1`
INT
NULL
,
...
...
@@ -124,9 +141,20 @@ INSERT INTO `order` (customer_id, created_at, total) VALUES (1, 1325282384, 110.
INSERT
INTO
`order`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
`order`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
tests/unit/data/mssql.sql
View file @
95d2b29b
IF
OBJECT_ID
(
'[dbo].[order_item]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
order_item
];
IF
OBJECT_ID
(
'[dbo].[order_item_with_null_fk]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
order_item_with_null_fk
];
IF
OBJECT_ID
(
'[dbo].[item]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
item
];
IF
OBJECT_ID
(
'[dbo].[order]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
order
];
IF
OBJECT_ID
(
'[dbo].[order_with_null_fk]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
order_with_null_fk
];
IF
OBJECT_ID
(
'[dbo].[category]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
category
];
IF
OBJECT_ID
(
'[dbo].[customer]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
customer
];
IF
OBJECT_ID
(
'[dbo].[profile]'
,
'U'
)
IS
NOT
NULL
DROP
TABLE
[
dbo
].[
profile
];
...
...
@@ -54,6 +56,13 @@ CREATE TABLE [dbo].[order] (
)
ON
[
PRIMARY
]
);
CREATE
TABLE
[
dbo
].[
order_with_null_fk
]
(
[
id
]
[
int
]
IDENTITY
(
1
,
1
)
NOT
NULL
,
[
customer_id
]
[
int
]
,
[
created_at
]
[
int
]
NOT
NULL
,
[
total
]
[
decimal
](
10
,
0
)
NOT
NULL
);
CREATE
TABLE
[
dbo
].[
order_item
]
(
[
order_id
]
[
int
]
NOT
NULL
,
[
item_id
]
[
int
]
NOT
NULL
,
...
...
@@ -63,6 +72,12 @@ CREATE TABLE [dbo].[order_item] (
[
order_id
]
ASC
,
[
item_id
]
ASC
)
ON
[
PRIMARY
]
);
CREATE
TABLE
[
dbo
].[
order_item_with_null_fk
]
(
[
order_id
]
[
int
],
[
item_id
]
[
int
],
[
quantity
]
[
int
]
NOT
NULL
,
[
subtotal
]
[
decimal
](
10
,
0
)
NOT
NULL
);
CREATE
TABLE
[
dbo
].[
null_values
]
(
...
...
@@ -109,9 +124,20 @@ INSERT INTO [dbo].[order] ([customer_id], [created_at], [total]) VALUES (1, 1325
INSERT
INTO
[
dbo
].[
order
]
([
customer_id
],
[
created_at
],
[
total
])
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
[
dbo
].[
order
]
([
customer_id
],
[
created_at
],
[
total
])
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
[
dbo
].[
order_with_null_fk
]
([
customer_id
],
[
created_at
],
[
total
])
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
[
dbo
].[
order_with_null_fk
]
([
customer_id
],
[
created_at
],
[
total
])
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
[
dbo
].[
order_with_null_fk
]
([
customer_id
],
[
created_at
],
[
total
])
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
[
dbo
].[
order_item
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
3
,
2
,
1
,
40
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
[
dbo
].[
order_item_with_null_fk
]
([
order_id
],
[
item_id
],
[
quantity
],
[
subtotal
])
VALUES
(
3
,
2
,
1
,
40
.
0
);
tests/unit/data/mysql.sql
View file @
95d2b29b
...
...
@@ -5,8 +5,10 @@
DROP
TABLE
IF
EXISTS
`composite_fk`
CASCADE
;
DROP
TABLE
IF
EXISTS
`order_item`
CASCADE
;
DROP
TABLE
IF
EXISTS
`order_item_with_null_fk`
CASCADE
;
DROP
TABLE
IF
EXISTS
`item`
CASCADE
;
DROP
TABLE
IF
EXISTS
`order`
CASCADE
;
DROP
TABLE
IF
EXISTS
`order_with_null_fk`
CASCADE
;
DROP
TABLE
IF
EXISTS
`category`
CASCADE
;
DROP
TABLE
IF
EXISTS
`customer`
CASCADE
;
DROP
TABLE
IF
EXISTS
`profile`
CASCADE
;
...
...
@@ -61,6 +63,14 @@ CREATE TABLE `order` (
CONSTRAINT
`FK_order_customer_id`
FOREIGN
KEY
(
`customer_id`
)
REFERENCES
`customer`
(
`id`
)
ON
DELETE
CASCADE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`order_with_null_fk`
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`customer_id`
int
(
11
),
`created_at`
int
(
11
)
NOT
NULL
,
`total`
decimal
(
10
,
0
)
NOT
NULL
,
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`order_item`
(
`order_id`
int
(
11
)
NOT
NULL
,
`item_id`
int
(
11
)
NOT
NULL
,
...
...
@@ -72,6 +82,14 @@ CREATE TABLE `order_item` (
CONSTRAINT
`FK_order_item_item_id`
FOREIGN
KEY
(
`item_id`
)
REFERENCES
`item`
(
`id`
)
ON
DELETE
CASCADE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`order_item_with_null_fk`
(
`order_id`
int
(
11
),
`item_id`
int
(
11
),
`quantity`
int
(
11
)
NOT
NULL
,
`subtotal`
decimal
(
10
,
0
)
NOT
NULL
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`composite_fk`
(
`id`
int
(
11
)
NOT
NULL
,
`order_id`
int
(
11
)
NOT
NULL
,
...
...
@@ -124,6 +142,10 @@ INSERT INTO `order` (customer_id, created_at, total) VALUES (1, 1325282384, 110.
INSERT
INTO
`order`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
`order`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
`order_with_null_fk`
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
...
...
@@ -131,6 +153,13 @@ INSERT INTO `order_item` (order_id, item_id, quantity, subtotal) VALUES (2, 5, 1
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
`order_item`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
`order_item_with_null_fk`
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
/**
* (MySQL-)Database Schema for validator tests
...
...
tests/unit/data/postgres.sql
View file @
95d2b29b
...
...
@@ -6,7 +6,9 @@
DROP
TABLE
IF
EXISTS
"order_item"
CASCADE
;
DROP
TABLE
IF
EXISTS
"item"
CASCADE
;
DROP
TABLE
IF
EXISTS
"order_item_with_null_fk"
CASCADE
;
DROP
TABLE
IF
EXISTS
"order"
CASCADE
;
DROP
TABLE
IF
EXISTS
"order_with_null_fk"
CASCADE
;
DROP
TABLE
IF
EXISTS
"category"
CASCADE
;
DROP
TABLE
IF
EXISTS
"customer"
CASCADE
;
DROP
TABLE
IF
EXISTS
"profile"
CASCADE
;
...
...
@@ -54,6 +56,13 @@ CREATE TABLE "order" (
total
decimal
(
10
,
0
)
NOT
NULL
);
CREATE
TABLE
"order_with_null_fk"
(
id
serial
not
null
primary
key
,
customer_id
integer
,
created_at
integer
NOT
NULL
,
total
decimal
(
10
,
0
)
NOT
NULL
);
CREATE
TABLE
"order_item"
(
order_id
integer
NOT
NULL
references
"order"
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
,
item_id
integer
NOT
NULL
references
"item"
(
id
)
on
UPDATE
CASCADE
on
DELETE
CASCADE
,
...
...
@@ -62,6 +71,13 @@ CREATE TABLE "order_item" (
PRIMARY
KEY
(
order_id
,
item_id
)
);
CREATE
TABLE
"order_item_with_null_fk"
(
order_id
integer
,
item_id
integer
,
quantity
integer
NOT
NULL
,
subtotal
decimal
(
10
,
0
)
NOT
NULL
);
CREATE
TABLE
"null_values"
(
id
INT
NOT
NULL
,
var1
INT
NULL
,
...
...
@@ -106,6 +122,10 @@ INSERT INTO "order" (customer_id, created_at, total) VALUES (1, 1325282384, 110.
INSERT
INTO
"order"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
"order"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
...
...
@@ -113,6 +133,13 @@ INSERT INTO "order_item" (order_id, item_id, quantity, subtotal) VALUES (2, 5, 1
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
/**
* (Postgres-)Database Schema for validator tests
*/
...
...
tests/unit/data/sqlite.sql
View file @
95d2b29b
...
...
@@ -5,8 +5,10 @@
DROP
TABLE
IF
EXISTS
"composite_fk"
;
DROP
TABLE
IF
EXISTS
"order_item"
;
DROP
TABLE
IF
EXISTS
"order_item_with_null_fk"
;
DROP
TABLE
IF
EXISTS
"item"
;
DROP
TABLE
IF
EXISTS
"order"
;
DROP
TABLE
IF
EXISTS
"order_with_null_fk"
;
DROP
TABLE
IF
EXISTS
"category"
;
DROP
TABLE
IF
EXISTS
"customer"
;
DROP
TABLE
IF
EXISTS
"profile"
;
...
...
@@ -50,6 +52,14 @@ CREATE TABLE "order" (
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
"order_with_null_fk"
(
id
INTEGER
NOT
NULL
,
customer_id
INTEGER
,
created_at
INTEGER
NOT
NULL
,
total
decimal
(
10
,
0
)
NOT
NULL
,
PRIMARY
KEY
(
id
)
);
CREATE
TABLE
"order_item"
(
order_id
INTEGER
NOT
NULL
,
item_id
INTEGER
NOT
NULL
,
...
...
@@ -58,6 +68,13 @@ CREATE TABLE "order_item" (
PRIMARY
KEY
(
order_id
,
item_id
)
);
CREATE
TABLE
"order_item_with_null_fk"
(
order_id
INTEGER
,
item_id
INTEGER
,
quantity
INTEGER
NOT
NULL
,
subtotal
decimal
(
10
,
0
)
NOT
NULL
,
);
CREATE
TABLE
"composite_fk"
(
id
int
(
11
)
NOT
NULL
,
order_id
int
(
11
)
NOT
NULL
,
...
...
@@ -109,6 +126,10 @@ INSERT INTO "order" (customer_id, created_at, total) VALUES (1, 1325282384, 110.
INSERT
INTO
"order"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
"order"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
1
,
1325282384
,
110
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325334482
,
33
.
0
);
INSERT
INTO
"order_with_null_fk"
(
customer_id
,
created_at
,
total
)
VALUES
(
2
,
1325502201
,
40
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
...
...
@@ -116,6 +137,13 @@ INSERT INTO "order_item" (order_id, item_id, quantity, subtotal) VALUES (2, 5, 1
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
"order_item"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
1
,
1
,
30
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
1
,
2
,
2
,
40
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
4
,
1
,
10
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
5
,
1
,
15
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
2
,
3
,
1
,
8
.
0
);
INSERT
INTO
"order_item_with_null_fk"
(
order_id
,
item_id
,
quantity
,
subtotal
)
VALUES
(
3
,
2
,
1
,
40
.
0
);
/**
* (SqLite-)Database Schema for validator tests
*/
...
...
tests/unit/framework/ar/ActiveRecordTestTrait.php
View file @
95d2b29b
...
...
@@ -678,24 +678,95 @@ trait ActiveRecordTestTrait
$customerClass
=
$this
->
getCustomerClass
();
/** @var \yii\db\ActiveRecordInterface $orderClass */
$orderClass
=
$this
->
getOrderClass
();
/** @var \yii\db\ActiveRecordInterface $orderWithNullFKClass */
$orderWithNullFKClass
=
$this
->
getOrderWithNullFKClass
();
/** @var \yii\db\ActiveRecordInterface $orderItemsWithNullFKClass */
$orderItemsWithNullFKClass
=
$this
->
getOrderIteWithNullFKmClass
();
/** @var TestCase|ActiveRecordTestTrait $this */
// has many
// has many without delete
$customer
=
$customerClass
::
findOne
(
2
);
$this
->
assertEquals
(
2
,
count
(
$customer
->
ordersWithNullFK
));
$customer
->
unlink
(
'ordersWithNullFK'
,
$customer
->
ordersWithNullFK
[
1
],
false
);
$this
->
assertEquals
(
1
,
count
(
$customer
->
ordersWithNullFK
));
$orderWithNullFK
=
$orderWithNullFKClass
::
findOne
(
3
);
$this
->
assertEquals
(
3
,
$orderWithNullFK
->
id
);
$this
->
assertNull
(
$orderWithNullFK
->
customer_id
);
// has many with delete
$customer
=
$customerClass
::
findOne
(
2
);
$this
->
assertEquals
(
2
,
count
(
$customer
->
orders
));
$customer
->
unlink
(
'orders'
,
$customer
->
orders
[
1
],
true
);
$this
->
afterSave
();
$this
->
assertEquals
(
1
,
count
(
$customer
->
orders
));
$this
->
assertNull
(
$orderClass
::
findOne
(
3
));
// via model
// via model
with delete
$order
=
$orderClass
::
findOne
(
2
);
$this
->
assertEquals
(
3
,
count
(
$order
->
items
));
$this
->
assertEquals
(
3
,
count
(
$order
->
orderItems
));
$order
->
unlink
(
'items'
,
$order
->
items
[
2
],
true
);
$this
->
afterSave
();
$this
->
assertEquals
(
2
,
count
(
$order
->
items
));
$this
->
assertEquals
(
2
,
count
(
$order
->
orderItems
));
// via model without delete
$this
->
assertEquals
(
3
,
count
(
$order
->
itemsWithNullFK
));
$order
->
unlink
(
'itemsWithNullFK'
,
$order
->
itemsWithNullFK
[
2
],
false
);
$this
->
assertEquals
(
2
,
count
(
$order
->
itemsWithNullFK
));
$this
->
assertEquals
(
2
,
count
(
$order
->
orderItems
));
}
public
function
testUnlinkAll
()
{
/** @var \yii\db\ActiveRecordInterface $customerClass */
$customerClass
=
$this
->
getCustomerClass
();
/** @var \yii\db\ActiveRecordInterface $orderClass */
$orderClass
=
$this
->
getOrderClass
();
$orderWithNullFKClass
=
$this
->
getOrderWithNullFKClass
();
/** @var \yii\db\ActiveRecordInterface $orderItemsWithNullFKClass */
$orderItemsWithNullFKClass
=
$this
->
getOrderIteWithNullFKmClass
();
/** @var TestCase|ActiveRecordTestTrait $this */
// has many with delete
$customer
=
$customerClass
::
findOne
(
2
);
$this
->
assertEquals
(
2
,
count
(
$customer
->
orders
));
$customer
->
unlinkAll
(
'orders'
,
true
);
$this
->
assertEquals
(
0
,
count
(
$customer
->
orders
));
$this
->
assertNull
(
$orderClass
::
findOne
(
2
));
$this
->
assertNull
(
$orderClass
::
findOne
(
3
));
// has many without delete
$customer
=
$customerClass
::
findOne
(
2
);
$this
->
assertEquals
(
2
,
count
(
$customer
->
ordersWithNullFK
));
$customer
->
unlinkAll
(
'ordersWithNullFK'
,
false
);
$this
->
assertEquals
(
0
,
count
(
$customer
->
ordersWithNullFK
));
$this
->
assertEquals
(
2
,
$orderWithNullFKClass
::
find
()
->
where
(
'(id=2 OR id=3) AND customer_id IS NULL'
)
->
count
());
// via model with delete
/** @var Order $order */
$order
=
$orderClass
::
findOne
(
1
);
$this
->
assertEquals
(
2
,
count
(
$order
->
books
));
$order
->
unlinkAll
(
'books'
,
true
);
$this
->
assertEquals
(
0
,
count
(
$order
->
books
));
// via model without delete
$books
=
$order
->
booksWithNullFK
;
$this
->
assertEquals
(
2
,
count
(
$books
));
$order
->
unlinkAll
(
'booksWithNullFK'
,
false
);
$this
->
assertEquals
(
2
,
$orderItemsWithNullFKClass
::
find
()
->
where
(
'(item_id=1 OR item_id=2) AND order_id IS NULL'
)
->
count
());
}
public
static
$afterSaveNewRecord
;
...
...
tests/unit/framework/db/ActiveRecordTest.php
View file @
95d2b29b
...
...
@@ -7,6 +7,8 @@ use yiiunit\data\ar\NullValues;
use
yiiunit\data\ar\OrderItem
;
use
yiiunit\data\ar\Order
;
use
yiiunit\data\ar\Item
;
use
yiiunit\data\ar\OrderItemWithNullFK
;
use
yiiunit\data\ar\OrderWithNullFK
;
use
yiiunit\data\ar\Profile
;
use
yiiunit\data\ar\Type
;
use
yiiunit\framework\ar\ActiveRecordTestTrait
;
...
...
@@ -46,6 +48,15 @@ class ActiveRecordTest extends DatabaseTestCase
return
OrderItem
::
className
();
}
public
function
getOrderWithNullFKClass
()
{
return
OrderWithNullFK
::
className
();
}
public
function
getOrderIteWithNullFKmClass
()
{
return
OrderItemWithNullFK
::
className
();
}
public
function
testCustomColumns
()
{
// find custom column
...
...
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