Example #1
0
 function test_sti_field_is_saved_and_used_correctly()
 {
     setup_sqlite_test_db();
     # Create a dummy test entries
     $dummy = Test::create(array("dummy" => "TestDummy"));
     $this->assertEqual($dummy->type, NULL);
     $stest = new SuperTest(array("dummy" => "SuperDummy"));
     $stest->save();
     $this->assertEqual(strtolower($stest->type), "supertest");
     $utest = new UltraTest(array("dummy" => "UltraDummy"));
     $utest->save();
     $this->assertEqual(strtolower($utest->type), "ultratest");
     $atest = new AutoTest(array("dummy" => "AutoDummy"));
     $atest->save();
     $this->assertEqual(strtolower($atest->type), "autotest");
     # PHP 5.3 needed to call magic methods statically, so
     # work around by instanciating the class as singleton
     $Test = Singleton::instance("Test");
     # Load and check test entries
     $dummy2 = $Test->find_by_dummy("TestDummy");
     $this->assertEqual($dummy2->type, NULL);
     $this->assertEqual(strtolower(get_class($dummy2)), "test");
     $stest2 = $Test->find_by_dummy("SuperDummy");
     $this->assertEqual(strtolower($stest2->type), "supertest");
     $this->assertEqual(strtolower(get_class($stest2)), "supertest");
     $utest2 = $Test->find_by_dummy("UltraDummy");
     $this->assertEqual(strtolower($utest2->type), "ultratest");
     $this->assertEqual(strtolower(get_class($utest2)), "ultratest");
     $atest2 = $Test->find_by_dummy("AutoDummy");
     $this->assertEqual(strtolower($atest2->type), "autotest");
     $this->assertEqual(strtolower(get_class($atest2)), "autotest");
 }
 function test_find_by()
 {
     setup_sqlite_test_db();
     # PHP 5.3 needed to call magic methods statically, so
     # work around by instanciating the class as singleton
     $Test = Singleton::instance("Test");
     # create two test entries to be found
     Test::create(array("dummy" => "Test 1"), array("dummy" => "Test 2"));
     # Test find_by single id
     $dummy = $Test->find_by_id(1);
     $this->assertEqual(strtolower(get_class($dummy)), "test");
     $this->assertEqual($dummy->dummy, "Test 1");
     # Test find_by id array
     $dummies = $Test->find_by_id(array(1, 2), array("order" => "id"));
     $this->assertEqual(count($dummies), 2);
     $this->assertEqual($dummies[0]->dummy, "Test 1");
     $this->assertEqual($dummies[1]->dummy, "Test 2");
     # Test it works with strings, too
     $dummy = $Test->find_by_dummy("Test 2");
     $this->assertEqual($dummy->id, 2);
     # Test their combination
     $dummy = $Test->find_by_id_and_dummy(1, "Test 1");
     $this->assertEqual($dummy->id, 1);
     $this->assertEqual($dummies[0]->dummy, "Test 1");
     # Test their array'ed combination
     $dummies = $Test->find_by_id_and_dummy(array(1, 2), array("Test 1", "Test 2"), array("order" => "id"));
     $this->assertEqual(count($dummies), 2);
     $this->assertEqual($dummies[0]->dummy, "Test 1");
     $this->assertEqual($dummies[1]->dummy, "Test 2");
 }
 function test_find_conditions_for_multiple_results()
 {
     setup_sqlite_test_db();
     # create two test entries to be found
     Test::create(array("dummy" => "Test 1"), array("dummy" => "Test 2"));
     $result = Test::find(array("conditions" => "id = 1 OR id = 2", "order" => "id"));
     $this->assertEqual(count($result), 2);
     $result = Test::find(array("conditions" => array("id = ? OR dummy = ?", 1, "Test 2"), "order" => "id"));
     $this->assertEqual(count($result), 2);
     $result = Test::find(array("conditions" => array("id IN (?)", array(1, 2)), "order" => "id"));
     $this->assertEqual(count($result), 2);
     $result = Test::find(array("conditions" => array(array("id IN (?)", array(1, 2)), array("dummy IN (?)", array("Test 1", "Test 2"))), "order" => "id"));
     $this->assertEqual(count($result), 2);
 }
 function test_belongs_to_with_preloaded_data()
 {
     setup_sqlite_test_db();
     preload_sqlite_data();
     $result1 = TestResult::find(1);
     $test = $result1->test;
     $this->assertEqual($test->dummy, "Test1");
     $result2 = TestResult::find(2);
     $test = $result2->test;
     $this->assertEqual($test->dummy, "Test2");
     $result3 = TestResult::find(3);
     $test = $result3->test;
     $this->assertEqual($test->dummy, "Test2");
 }
 function test_class_to_table_name()
 {
     setup_sqlite_test_db();
     # Basic test to ensure inflections for table names work and
     # auto-inheritance from class name resolves correctly
     $test = new Test();
     $this->assertEqual($test->_table_name, "tests");
     # Now test the same works for STI and resolves to the base
     # class name
     $sti_test = new STITest();
     $this->assertEqual($sti_test->_table_name, "tests");
     $this->assertEqual(strtolower($sti_test->_type_name), "stitest");
     # Ensure CamelCase class names resolve properly to their
     # "tableized" camel_cases counterpart
     $camel_case = new CamelCase();
     $this->assertEqual($camel_case->_table_name, "camel_cases");
 }
 function test_create()
 {
     setup_sqlite_test_db();
     # Create a dummy test entry, ensure it is of correct type and got its
     # parameters correctly saved
     $dummy = Test::create(array("dummy" => "Test456"));
     $this->assertEqual(strtolower(get_class($dummy)), "test");
     $this->assertEqual($dummy->_base_class, "Test");
     $this->assertEqual($dummy->dummy, "Test456");
     $this->assertTrue($dummy->id > 0);
     # Now create two test entries at once
     $dummys = Test::create(array("dummy" => "Test567"), array("dummy" => "Test678"));
     $this->assertEqual(count($dummys), 2);
     # Return the complete table and check there is exactly one row
     $all_rows = Test::find("all");
     $this->assertEqual(count($all_rows), 3);
     # Return the first row and check it still matches our first dummy test entry
     $first = Test::find("first");
     $this->assertEqual($first->dummy, "Test456");
     $this->assertTrue($first->id > 0);
 }