From e2cb2242caf642c6440b6a1d0fc89b3826e85955 Mon Sep 17 00:00:00 2001 From: tag Date: Wed, 21 Nov 2012 17:24:55 -0500 Subject: Fixed query logging for delete_many; added unit test for delete_many --- test/test_queries.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) mode change 100644 => 100755 test/test_queries.php (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php old mode 100644 new mode 100755 index bcd4c7e..984b407 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -291,20 +291,24 @@ $expected = "DELETE FROM `widget` WHERE `id` = '1'"; Tester::check_equal("Delete data", $expected); + $widget = ORM::for_table('widget')->where_equal('age', 10)->delete_many(); + $expected = "DELETE FROM `widget` WHERE `age` = '10'"; + Tester::check_equal("Delete many", $expected); + // Regression tests $widget = ORM::for_table('widget')->select('widget.*')->find_one(); $expected = "SELECT `widget`.* FROM `widget` LIMIT 1"; Tester::check_equal("Issue #12 - incorrect quoting of column wildcard", $expected); - + $widget = ORM::for_table('widget')->where_raw('username LIKE "ben%"')->find_many(); $expected = 'SELECT * FROM `widget` WHERE username LIKE "ben%"'; Tester::check_equal('Issue #57 - _log_query method raises a warning when query contains "%"', $expected); - + $widget = ORM::for_table('widget')->where_raw('comments LIKE "has been released?%"')->find_many(); $expected = 'SELECT * FROM `widget` WHERE comments LIKE "has been released?%"'; Tester::check_equal('Issue #57 - _log_query method raises a warning when query contains "?"', $expected); - + // Tests that alter Idiorm's config are done last ORM::configure('id_column', 'primary_key'); -- cgit v1.2.3 From f6d786167b9e2a14ebcdb537744b2df1b03ebd00 Mon Sep 17 00:00:00 2001 From: tag Date: Wed, 21 Nov 2012 18:59:34 -0500 Subject: Add raw_execute() to ORM --- test/test_queries.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index 984b407..8cc26d6 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -295,6 +295,10 @@ $expected = "DELETE FROM `widget` WHERE `age` = '10'"; Tester::check_equal("Delete many", $expected); + ORM::raw_execute("INSERT OR IGNORE INTO `widget` (`id`, `name`) VALUES (?, ?)", array(1, 'Tolstoy')); + $expected = "INSERT OR IGNORE INTO `widget` (`id`, `name`) VALUES ('1', 'Tolstoy')"; + Tester::check_equal("Raw execute", $expected); // A bit of a silly test, as query is passed through + // Regression tests $widget = ORM::for_table('widget')->select('widget.*')->find_one(); -- cgit v1.2.3 From 8fa6f7059f56684397357a6a8eb69dbdd5102681 Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Thu, 3 Jan 2013 13:37:19 +0000 Subject: Add test for get_last_statement --- test/test_queries.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index 8cc26d6..d3749cb 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -13,7 +13,7 @@ ORM::configure('logging', true); // Set up the dummy database connection - $db = new DummyPDO('sqlite::memory:'); + $db = new MockPDO('sqlite::memory:'); ORM::set_db($db); ORM::for_table('widget')->find_many(); @@ -299,6 +299,19 @@ $expected = "INSERT OR IGNORE INTO `widget` (`id`, `name`) VALUES ('1', 'Tolstoy')"; Tester::check_equal("Raw execute", $expected); // A bit of a silly test, as query is passed through + ORM::for_table('widget')->where('name', 'Fred')->find_one(); + $statement = ORM::get_last_statement(); + $test_name = 'get_last_statement() returned MockPDOStatement'; + if($statement instanceOf MockPDOStatement) { + Tester::report_pass($test_name); + } else { + $actual = gettype($statement); + if('object' == $actual) { + $actual = get_class($statement); + } + Tester::report_failure($test_name, 'MockPDOStatement', $actual); + } + // Regression tests $widget = ORM::for_table('widget')->select('widget.*')->find_one(); @@ -358,5 +371,4 @@ Tester::check_equal("Caching, same query not run twice", $expected); - Tester::report(); -?> + Tester::report(); \ No newline at end of file -- cgit v1.2.3 From 3439ca1d152acf55ee43c81831d1098835dac58e Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Thu, 3 Jan 2013 15:31:07 +0000 Subject: Issue #90 When using set_expr alone it doesn't trigger query creation --- test/test_queries.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index d3749cb..d30a49f 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -326,6 +326,12 @@ $expected = 'SELECT * FROM `widget` WHERE comments LIKE "has been released?%"'; Tester::check_equal('Issue #57 - _log_query method raises a warning when query contains "?"', $expected); + $widget = ORM::for_table('widget')->find_one(1); + $widget->set_expr('added', 'NOW()'); + $widget->save(); + $expected = "UPDATE `widget` SET `added` = NOW() WHERE `id` = '1'"; + Tester::check_equal("Issue #90 - When using set_expr alone it doesn't trigger query creation", $expected); + // Tests that alter Idiorm's config are done last ORM::configure('id_column', 'primary_key'); -- cgit v1.2.3 From 314caf838ec1ca7a7833378653979476ce6d1bb7 Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Fri, 4 Jan 2013 09:43:09 +0000 Subject: Issue #74 escaping quote symbols in "_quote_identifier_part" --- test/test_queries.php | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index d30a49f..2a55702 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -326,6 +326,12 @@ $expected = 'SELECT * FROM `widget` WHERE comments LIKE "has been released?%"'; Tester::check_equal('Issue #57 - _log_query method raises a warning when query contains "?"', $expected); + $widget = ORM::for_table('widget')->find_one(1); + $widget->set('ad`ded', '2013-01-04'); + $widget->save(); + $expected = "UPDATE `widget` SET `ad``ded` = '2013-01-04' WHERE `id` = '1'"; + Tester::check_equal('Issue #74 - escaping quote symbols in "_quote_identifier_part"', $expected); + $widget = ORM::for_table('widget')->find_one(1); $widget->set_expr('added', 'NOW()'); $widget->save(); -- cgit v1.2.3 From 2c1678987e3dd08f17705455c496bdf03b6ee7e6 Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Fri, 4 Jan 2013 11:59:53 +0000 Subject: Add HAVING clause support to query builder --- test/test_queries.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index 2a55702..368af71 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -116,6 +116,54 @@ $expected = "SELECT * FROM `widget` GROUP BY FROM_UNIXTIME(`time`, '%Y-%m')"; Tester::check_equal("GROUP BY expression", $expected); + ORM::for_table('widget')->group_by('name')->having('name', 'Fred')->find_one(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` = 'Fred' LIMIT 1"; + Tester::check_equal("Single having clause", $expected); + + ORM::for_table('widget')->group_by('name')->having('name', 'Fred')->having('age', 10)->find_one(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` = 'Fred' AND `age` = '10' LIMIT 1"; + Tester::check_equal("Multiple HAVING clauses", $expected); + + ORM::for_table('widget')->group_by('name')->having_not_equal('name', 'Fred')->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` != 'Fred'"; + Tester::check_equal("having_not_equal method", $expected); + + ORM::for_table('widget')->group_by('name')->having_like('name', '%Fred%')->find_one(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` LIKE '%Fred%' LIMIT 1"; + Tester::check_equal("having_like method", $expected); + + ORM::for_table('widget')->group_by('name')->having_not_like('name', '%Fred%')->find_one(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` NOT LIKE '%Fred%' LIMIT 1"; + Tester::check_equal("having_not_like method", $expected); + + ORM::for_table('widget')->group_by('name')->having_in('name', array('Fred', 'Joe'))->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` IN ('Fred', 'Joe')"; + Tester::check_equal("having_in method", $expected); + + ORM::for_table('widget')->group_by('name')->having_not_in('name', array('Fred', 'Joe'))->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` NOT IN ('Fred', 'Joe')"; + Tester::check_equal("having_not_in method", $expected); + + ORM::for_table('widget')->group_by('name')->having_lt('age', 10)->having_gt('age', 5)->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` < '10' AND `age` > '5'"; + Tester::check_equal("HAVING less than and greater than", $expected); + + ORM::for_table('widget')->group_by('name')->having_lte('age', 10)->having_gte('age', 5)->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` <= '10' AND `age` >= '5'"; + Tester::check_equal("HAVING less than or equal and greater than or equal", $expected); + + ORM::for_table('widget')->group_by('name')->having_null('name')->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` IS NULL"; + Tester::check_equal("having_null method", $expected); + + ORM::for_table('widget')->group_by('name')->having_not_null('name')->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` IS NOT NULL"; + Tester::check_equal("having_not_null method", $expected); + + ORM::for_table('widget')->group_by('name')->having_raw('`name` = ? AND (`age` = ? OR `age` = ?)', array('Fred', 5, 10))->find_many(); + $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `name` = 'Fred' AND (`age` = '5' OR `age` = '10')"; + Tester::check_equal("Raw HAVING clause", $expected); + ORM::for_table('widget')->where('name', 'Fred')->limit(5)->offset(5)->order_by_asc('name')->find_many(); $expected = "SELECT * FROM `widget` WHERE `name` = 'Fred' ORDER BY `name` ASC LIMIT 5 OFFSET 5"; Tester::check_equal("Complex query", $expected); -- cgit v1.2.3 From 598927df4c32015e9b2a7a7eecb04eeda0a9dc3b Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Tue, 15 Jan 2013 09:11:43 +0000 Subject: Add ArrayAccess to ORM properties --- test/test_queries.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index 368af71..8580fd6 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -347,6 +347,13 @@ $expected = "INSERT OR IGNORE INTO `widget` (`id`, `name`) VALUES ('1', 'Tolstoy')"; Tester::check_equal("Raw execute", $expected); // A bit of a silly test, as query is passed through + $widget = ORM::for_table('widget')->create(); + $widget['name'] = "Fred"; + $widget['age'] = 10; + $widget->save(); + $expected = "INSERT INTO `widget` (`name`, `age`) VALUES ('Fred', '10')"; + Tester::check_equal("Insert data using ArrayAccess", $expected); + ORM::for_table('widget')->where('name', 'Fred')->find_one(); $statement = ORM::get_last_statement(); $test_name = 'get_last_statement() returned MockPDOStatement'; -- cgit v1.2.3 From f9a6f92e3e38a4235438c14d5e1c205f331133ee Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Fri, 18 Jan 2013 10:54:21 +0000 Subject: Move more query tests over to PHPUnit --- test/test_queries.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index 8580fd6..c9f5c84 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -104,6 +104,8 @@ $expected = "SELECT * FROM `widget` ORDER BY `name` ASC, `age` DESC LIMIT 1"; Tester::check_equal("Multiple ORDER BY", $expected); + /////////////////////////////////////////// + ORM::for_table('widget')->group_by('name')->find_many(); $expected = "SELECT * FROM `widget` GROUP BY `name`"; Tester::check_equal("GROUP BY", $expected); -- cgit v1.2.3 From 5b11534bd506974d2377b80e24891b248eea319b Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Fri, 18 Jan 2013 17:27:53 +0000 Subject: Add more tests to suite --- test/test_queries.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index c9f5c84..db78ffe 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -104,8 +104,6 @@ $expected = "SELECT * FROM `widget` ORDER BY `name` ASC, `age` DESC LIMIT 1"; Tester::check_equal("Multiple ORDER BY", $expected); - /////////////////////////////////////////// - ORM::for_table('widget')->group_by('name')->find_many(); $expected = "SELECT * FROM `widget` GROUP BY `name`"; Tester::check_equal("GROUP BY", $expected); @@ -150,6 +148,8 @@ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` < '10' AND `age` > '5'"; Tester::check_equal("HAVING less than and greater than", $expected); + /////////////////////////////////////////// + ORM::for_table('widget')->group_by('name')->having_lte('age', 10)->having_gte('age', 5)->find_many(); $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` <= '10' AND `age` >= '5'"; Tester::check_equal("HAVING less than or equal and greater than or equal", $expected); -- cgit v1.2.3 From 6391acb3371e07742cf94c7c4bc4cc3888a6cae5 Mon Sep 17 00:00:00 2001 From: Simon Holywell Date: Mon, 21 Jan 2013 17:30:38 +0000 Subject: Add more query building tests --- test/test_queries.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'test/test_queries.php') diff --git a/test/test_queries.php b/test/test_queries.php index db78ffe..14adf9b 100755 --- a/test/test_queries.php +++ b/test/test_queries.php @@ -148,7 +148,6 @@ $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` < '10' AND `age` > '5'"; Tester::check_equal("HAVING less than and greater than", $expected); - /////////////////////////////////////////// ORM::for_table('widget')->group_by('name')->having_lte('age', 10)->having_gte('age', 5)->find_many(); $expected = "SELECT * FROM `widget` GROUP BY `name` HAVING `age` <= '10' AND `age` >= '5'"; @@ -178,6 +177,8 @@ $expected = "SELECT * FROM `widget` WHERE `age` <= '10' AND `age` >= '5'"; Tester::check_equal("Less than or equal and greater than or equal", $expected); + /////////////////////////////////////////// + ORM::for_table('widget')->where_null('name')->find_many(); $expected = "SELECT * FROM `widget` WHERE `name` IS NULL"; Tester::check_equal("where_null method", $expected); -- cgit v1.2.3