summaryrefslogtreecommitdiff
path: root/sites/all/modules/multiform/tests
diff options
context:
space:
mode:
Diffstat (limited to 'sites/all/modules/multiform/tests')
-rw-r--r--sites/all/modules/multiform/tests/multiform.test104
-rw-r--r--sites/all/modules/multiform/tests/multiform_test.info14
-rw-r--r--sites/all/modules/multiform/tests/multiform_test.module171
3 files changed, 289 insertions, 0 deletions
diff --git a/sites/all/modules/multiform/tests/multiform.test b/sites/all/modules/multiform/tests/multiform.test
new file mode 100644
index 000000000..f7a0a6ab4
--- /dev/null
+++ b/sites/all/modules/multiform/tests/multiform.test
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @file
+ *
+ *
+ *
+ * @author Kálmán Hosszu - http://drupal.org/user/267481
+ */
+
+class MultiformTestCase extends DrupalWebTestCase {
+
+ /**
+ * Info method.
+ *
+ * @return array
+ */
+ public static function getInfo() {
+ return array(
+ 'name' => 'Forms functionality',
+ 'description' => 'Testing multiform functionality.' ,
+ 'group' => 'Multiform',
+ );
+ }
+
+ /**
+ * Overriden setUp function.
+ */
+ public function setUp() {
+ parent::setUp('multiform', 'multiform_test');
+ }
+
+ /**
+ * Check various submit ops.
+ */
+ public function testSubmitHandling() {
+ // Go to the form page.
+ $this->drupalGet('multiform-test/1');
+
+ // Check buttons.
+ $this->assertFieldByName('op', 'save');
+ $this->assertFieldByName('op', 'delete');
+
+ // No more buttons.
+ $submitButtons = $this->xpath('//input[@type="submit" and @name!="op"]');
+ $this->assertEqual(count($submitButtons), 0, t('No more submit button.'));
+
+ // Save button.
+ $this->drupalPost(NULL, array(), 'save');
+ $this->assertText('multiform_test1_1multiform_test1_submit_button', t('First form save message is found.'));
+ $this->assertText('multiform_test1_2multiform_test1_submit_button', t('Second form save message is found.'));
+
+ // Delete button.
+ $this->drupalPost(NULL, array(), 'delete');
+ $this->assertText('multiform_test1_1multiform_test1_delete_button', t('First form delete message is found.'));
+ $this->assertText('multiform_test1_2multiform_test1_delete_button', t('Second form delete message is found.'));
+ }
+
+ /**
+ * Check the merged fields exist.
+ */
+ public function testFieldsAreExist() {
+ // Go to the form page.
+ $this->drupalGet('multiform-test/2');
+
+ // Check textfields.
+ $this->assertFieldByName('multiform[multiform_test2_1_0][required_text_1]');
+ $this->assertFieldByName('multiform[multiform_test2_2_1][required_text_2]');
+
+ // Check button.
+ $this->assertFieldByName('op', 'save');
+ }
+
+ /**
+ * Check required fields.
+ */
+ public function testRequiredFields() {
+ $first_text = array('multiform[multiform_test2_1_0][required_text_1]' => 'test1 value');
+ $second_text = array('multiform[multiform_test2_2_1][required_text_2]' => 'test2 value');
+ // No required fields.
+ $this->drupalPost('multiform-test/2', array(), 'save');
+ $this->assertText('test1 field is required.');
+ $this->assertText('test2 field is required.');
+ $this->assertNoText('multiform_test2_1multiform_test2_submit_button');
+ $this->assertNoText('multiform_test2_2multiform_test2_submit_button');
+
+ // Send all required fields.
+ $this->drupalPost(NULL, array_merge($first_text, $second_text), 'save');
+ $this->assertText('multiform_test2_1multiform_test2_submit_button');
+ $this->assertText('multiform_test2_2multiform_test2_submit_button');
+ $this->assertNoText('test1 field is required.');
+ $this->assertNoText('test2 field is required.');
+
+ // Send first form's required field.
+ $this->drupalPost(NULL, $first_text, 'save');
+ $this->assertNoText('multiform_test2_1multiform_test2_submit_button');
+ $this->assertText('test2 field is required.');
+
+ // Send second form's required field.
+ $this->drupalPost(NULL, $second_text, 'save');
+ $this->assertNoText('multiform_test2_2multiform_test2_submit_button');
+ $this->assertText('test1 field is required.');
+ }
+
+} \ No newline at end of file
diff --git a/sites/all/modules/multiform/tests/multiform_test.info b/sites/all/modules/multiform/tests/multiform_test.info
new file mode 100644
index 000000000..020dfa82e
--- /dev/null
+++ b/sites/all/modules/multiform/tests/multiform_test.info
@@ -0,0 +1,14 @@
+name = Multiform test
+description = Handle module for testing Multiform
+core = 7.x
+
+dependencies[] = multiform
+hidden = TRUE
+
+files[] = multiform_test.module
+; Information added by Drupal.org packaging script on 2014-06-11
+version = "7.x-1.1"
+core = "7.x"
+project = "multiform"
+datestamp = "1402457628"
+
diff --git a/sites/all/modules/multiform/tests/multiform_test.module b/sites/all/modules/multiform/tests/multiform_test.module
new file mode 100644
index 000000000..973beb30b
--- /dev/null
+++ b/sites/all/modules/multiform/tests/multiform_test.module
@@ -0,0 +1,171 @@
+<?php
+/**
+ * @file
+ *
+ *
+ *
+ * @author Kálmán Hosszu - http://drupal.org/user/267481
+ */
+
+/* ====================== */
+/* ==== DRUPAL HOOKS ==== */
+/* ====================== */
+
+/**
+ * Implementation of hook_menu().
+ *
+ * @return An array of menu items.
+ */
+function multiform_test_menu() {
+ $items = array();
+
+ $items['multiform-test/1'] = array(
+ 'title' => 'Multiform test page 1',
+ 'page callback' => 'multiform_get_form',
+ 'page arguments' => array(array('multiform_test1_1'), array('multiform_test1_2')),
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['multiform-test/2'] = array(
+ 'title' => 'Multiform test page 2',
+ 'page callback' => 'multiform_get_form',
+ 'page arguments' => array(array('multiform_test2_1'), array('multiform_test2_2')),
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ return $items;
+}
+
+
+/* ====================== */
+/* == MODULE FUNCTIONS == */
+/* ====================== */
+
+/* FIRST TEST CASE */
+
+/**
+ * Build multiform_test1_1 form.
+ *
+ * @param type $form
+ * @param type $form_state
+ * @return array
+ */
+function multiform_test1_1($form, $form_state) {
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => 'save',
+ '#submit' => array('multiform_test1_submit_button'),
+ );
+
+ $form['delete'] = array(
+ '#type' => 'submit',
+ '#value' => 'delete',
+ '#submit' => array('multiform_test1_delete_button'),
+ );
+
+ return $form;
+}
+
+/**
+ * Build multiform_test1_2 form.
+ *
+ * @param type $form
+ * @param type $form_state
+ * @return string
+ */
+function multiform_test1_2($form, $form_state) {
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => 'save',
+ '#submit' => array('multiform_test1_submit_button'),
+ );
+
+ $form['delete'] = array(
+ '#type' => 'submit',
+ '#value' => 'delete',
+ '#submit' => array('multiform_test1_delete_button'),
+ );
+
+ return $form;
+}
+
+/**
+ * Submit handing.
+ *
+ * @param type $form
+ * @param type $form_state
+ */
+function multiform_test1_submit_button($form, $form_state) {
+ drupal_set_message($form['#form_id'] . 'multiform_test1_submit_button');
+}
+
+/**
+ * Handling delete.
+ *
+ * @param type $form
+ * @param type $form_state
+ */
+function multiform_test1_delete_button($form, $form_state) {
+ drupal_set_message($form['#form_id'] . 'multiform_test1_delete_button');
+}
+
+
+/* SECOND TEST CASE */
+
+/**
+ * Build multiform_test2_1 form.
+ *
+ * @param type $form
+ * @param type $form_state
+ * @return array
+ */
+function multiform_test2_1($form, $form_state) {
+ $form['required_text_1'] = array(
+ '#type' => 'textfield',
+ '#title' => 'test1',
+ '#required' => TRUE,
+ );
+
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => 'save',
+ '#submit' => array('multiform_test2_submit_button'),
+ );
+
+ return $form;
+}
+
+/**
+ * Build multiform_test2_2 form.
+ *
+ * @param type $form
+ * @param type $form_state
+ * @return array
+ */
+function multiform_test2_2($form, $form_state) {
+ $form['required_text_2'] = array(
+ '#type' => 'textfield',
+ '#title' => 'test2',
+ '#required' => TRUE,
+ );
+
+ $form['submit'] = array(
+ '#type' => 'submit',
+ '#value' => 'save',
+ '#submit' => array('multiform_test2_submit_button'),
+ );
+
+ return $form;
+}
+
+/**
+ * Submit handing.
+ *
+ * @param type $form
+ * @param type $form_state
+ */
+function multiform_test2_submit_button($form, $form_state) {
+ drupal_set_message($form['#form_id'] . 'multiform_test2_submit_button');
+} \ No newline at end of file