'DBTNG example unit and UI tests', 'description' => 'Various unit tests on the dbtng example module.' , 'group' => 'Examples', ); } /** * {@inheritdoc} */ public function setUp() { parent::setUp('dbtng_example'); } /** * Test default module installation, two entries in the database table. */ public function testInstall() { $result = dbtng_example_entry_load(); $this->assertEqual( count($result), 2, 'Found two entries in the table after installing the module.' ); } /** * Test the UI. */ public function testUI() { // Test the basic list. $this->drupalGet('examples/dbtng'); $this->assertPattern("/John[td\/<>\w]+Doe/", "Text 'John Doe' found in table"); // Test the add tab. // Add the new entry. $this->drupalPost('examples/dbtng/add', array( 'name' => 'Some', 'surname' => 'Anonymous', 'age' => 33, ), t('Add') ); // Now find the new entry. $this->drupalGet('examples/dbtng'); $this->assertPattern("/Some[td\/<>\w]+Anonymous/", "Text 'Some Anonymous' found in table"); // Try the update tab. // Find out the pid of our "anonymous" guy. $result = dbtng_example_entry_load(array('surname' => 'Anonymous')); $this->drupalGet("examples/dbtng"); $this->assertEqual( count($result), 1, 'Found one entry in the table with surname = "Anonymous".' ); $entry = $result[0]; unset($entry->uid); $entry->name = 'NewFirstName'; $this->drupalPost('examples/dbtng/update', (array) $entry, t('Update')); // Now find the new entry. $this->drupalGet('examples/dbtng'); $this->assertPattern("/NewFirstName[td\/<>\w]+Anonymous/", "Text 'NewFirstName Anonymous' found in table"); // Try the advanced tab. $this->drupalGet('examples/dbtng/advanced'); $rows = $this->xpath("//*[@id='block-system-main']/div/table[1]/tbody/tr"); $this->assertEqual(count($rows), 1, "One row found in advanced view"); $this->assertFieldByXPath("//*[@id='block-system-main']/div/table[1]/tbody/tr/td[4]", "Roe", "Name 'Roe' Exists in advanced list"); } /** * Test several combinations, adding entries, updating and deleting. */ public function testAPIExamples() { // Create a new entry. $entry = array( 'name' => 'James', 'surname' => 'Doe', 'age' => 23, ); dbtng_example_entry_insert($entry); // Save another entry. $entry = array( 'name' => 'Jane', 'surname' => 'NotDoe', 'age' => 19, ); dbtng_example_entry_insert($entry); // Verify that 4 records are found in the database. $result = dbtng_example_entry_load(); $this->assertEqual( count($result), 4, 'Found a total of four entries in the table after creating two additional entries.' ); // Verify 2 of these records have 'Doe' as surname. $result = dbtng_example_entry_load(array('surname' => 'Doe')); $this->assertEqual( count($result), 2, 'Found two entries in the table with surname = "Doe".' ); // Now find our not-Doe entry. $result = dbtng_example_entry_load(array('surname' => 'NotDoe')); $this->assertEqual( count($result), 1, 'Found one entry in the table with surname "NotDoe'); // Our NotDoe will be changed to "NowDoe". $entry = $result[0]; $entry->surname = "NowDoe"; dbtng_example_entry_update((array) $entry); $result = dbtng_example_entry_load(array('surname' => 'NowDoe')); $this->assertEqual( count($result), 1, "Found renamed 'NowDoe' surname"); // Read only John Doe entry. $result = dbtng_example_entry_load(array('name' => 'John', 'surname' => 'Doe')); $this->assertEqual( count($result), 1, 'Found one entry for John Doe.' ); // Get the entry. $entry = (array) end($result); // Change age to 45 $entry['age'] = 45; // Update entry in database. dbtng_example_entry_update((array) $entry); // Find entries with age = 45 // Read only John Doe entry. $result = dbtng_example_entry_load(array('surname' => 'NowDoe')); $this->assertEqual( count($result), 1, 'Found one entry with surname = Nowdoe.' ); // Verify it is Jane NowDoe. $entry = (array) end($result); $this->assertEqual( $entry['name'], 'Jane', 'The name Jane is found in the entry' ); $this->assertEqual( $entry['surname'], 'NowDoe', 'The surname NowDoe is found in the entry' ); // Delete the entry. dbtng_example_entry_delete($entry); // Verify that now there are only 3 records. $result = dbtng_example_entry_load(); $this->assertEqual( count($result), 3, 'Found only three records, a record was deleted.' ); } }