414 changed files with 36478 additions and 35725 deletions
			
			
		| @ -0,0 +1,50 @@ | ||||
| <?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; | ||||
|     } | ||||
| } | ||||
| @ -1,10 +1,16 @@ | ||||
| <?php | ||||
| 
 | ||||
| return array( | ||||
| 	'mysql' => array( | ||||
| 		'dsn' => 'mysql:host=127.0.0.1;dbname=yiitest', | ||||
| 		'username' => 'travis', | ||||
| 		'password' => '', | ||||
| 		'fixture' => __DIR__ . '/mysql.sql', | ||||
| 	), | ||||
|     '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', | ||||
|         ), | ||||
|     ) | ||||
| ); | ||||
|  | ||||
| @ -1,262 +1,88 @@ | ||||
| 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 | ||||
| ( | ||||
| 	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'); | ||||
| 
 | ||||
| /** | ||||
|  * 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, | ||||
|   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); | ||||
| @ -0,0 +1,12 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace yiiunit\framework\db\sqlite; | ||||
| 
 | ||||
| class SqliteActiveRecordTest extends \yiiunit\framework\db\ActiveRecordTest | ||||
| { | ||||
|     public function setUp() | ||||
|     { | ||||
|         $this->driverName = 'sqlite'; | ||||
|         parent::setUp(); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,21 @@ | ||||
| <?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); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,47 @@ | ||||
| <?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)')); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,20 @@ | ||||
| <?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(); | ||||
|     } | ||||
| } | ||||
| @ -1,6 +1,6 @@ | ||||
| <?php | ||||
| 
 | ||||
| require(__DIR__ . '/../../../framework/yii.php'); | ||||
| require(__DIR__ . '/../../../yii/Yii.php'); | ||||
| 
 | ||||
| $application = new yii\web\Application('test', __DIR__ . '/protected'); | ||||
| $application->run(); | ||||
|  | ||||
| @ -0,0 +1,72 @@ | ||||
| /** | ||||
|  * Yii Captcha widget. | ||||
|  * | ||||
|  * This is the JavaScript widget used by the yii\widgets\Captcha widget. | ||||
|  * | ||||
|  * @link http://www.yiiframework.com/
 | ||||
|  * @copyright Copyright (c) 2008 Yii Software LLC | ||||
|  * @license http://www.yiiframework.com/license/
 | ||||
|  * @author Qiang Xue <qiang.xue@gmail.com> | ||||
|  * @since 2.0 | ||||
|  */ | ||||
| (function ($) { | ||||
| 	$.fn.yiiCaptcha = function (method) { | ||||
| 		if (methods[method]) { | ||||
| 			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | ||||
| 		} else if (typeof method === 'object' || !method) { | ||||
| 			return methods.init.apply(this, arguments); | ||||
| 		} else { | ||||
| 			$.error('Method ' + method + ' does not exist on jQuery.yiiCaptcha'); | ||||
| 			return false; | ||||
| 		} | ||||
| 	}; | ||||
| 
 | ||||
| 	var defaults = { | ||||
| 		refreshUrl: undefined, | ||||
| 		hashKey: undefined | ||||
| 	}; | ||||
| 
 | ||||
| 	var methods = { | ||||
| 		init: function (options) { | ||||
| 			return this.each(function () { | ||||
| 				var $e = $(this); | ||||
| 				var settings = $.extend({}, defaults, options || {}); | ||||
| 				$e.data('yiiCaptcha', { | ||||
| 					settings: settings | ||||
| 				}); | ||||
| 
 | ||||
| 				$e.on('click.yiiCaptcha', function() { | ||||
| 					methods.refresh.apply($e); | ||||
| 					return false; | ||||
| 				}); | ||||
| 
 | ||||
| 			}); | ||||
| 		}, | ||||
| 
 | ||||
| 		refresh: function () { | ||||
| 			var $e = this, | ||||
| 				settings = this.data('yiiCaptcha').settings; | ||||
| 			$.ajax({ | ||||
| 				url: $e.data('yiiCaptcha').settings.refreshUrl, | ||||
| 				dataType: 'json', | ||||
| 				cache: false, | ||||
| 				success: function(data) { | ||||
| 					$e.attr('src', data['url']); | ||||
| 					$('body').data(settings.hashKey, [data['hash1'], data['hash2']]); | ||||
| 				} | ||||
| 			}); | ||||
| 		}, | ||||
| 
 | ||||
| 		destroy: function () { | ||||
| 			return this.each(function () { | ||||
| 				$(window).unbind('.yiiCaptcha'); | ||||
| 				$(this).removeData('yiiCaptcha'); | ||||
| 			}); | ||||
| 		}, | ||||
| 
 | ||||
| 		data: function() { | ||||
| 			return this.data('yiiCaptcha'); | ||||
| 		} | ||||
| 	}; | ||||
| })(window.jQuery); | ||||
| 
 | ||||
| @ -0,0 +1,26 @@ | ||||
| /** | ||||
|  * Yii debug module. | ||||
|  * | ||||
|  * This JavaScript module provides the functions needed by the Yii debug toolbar. | ||||
|  * | ||||
|  * @link http://www.yiiframework.com/
 | ||||
|  * @copyright Copyright (c) 2008 Yii Software LLC | ||||
|  * @license http://www.yiiframework.com/license/
 | ||||
|  * @author Qiang Xue <qiang.xue@gmail.com> | ||||
|  * @since 2.0 | ||||
|  */ | ||||
| 
 | ||||
| yii.debug = (function ($) { | ||||
| 	return { | ||||
| 		load: function (id, url) { | ||||
| 			$.ajax({ | ||||
| 				url: url, | ||||
| 				//dataType: 'json',
 | ||||
| 				success: function(data) { | ||||
| 					var $e = $('#' + id); | ||||
| 					$e.html(data); | ||||
| 				} | ||||
| 			}); | ||||
| 		} | ||||
| 	}; | ||||
| })(jQuery); | ||||
| @ -1,7 +1,7 @@ | ||||
| /** | ||||
|  * Yii validation module. | ||||
|  * | ||||
|  * This JavaScript module provides the validation methods for the built-in validaotrs. | ||||
|  * This JavaScript module provides the validation methods for the built-in validators. | ||||
|  * | ||||
|  * @link http://www.yiiframework.com/
 | ||||
|  * @copyright Copyright (c) 2008 Yii Software LLC | ||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in new issue