282 lines
10 KiB
PHP
282 lines
10 KiB
PHP
|
<?php
|
||
|
|
||
|
include( '../../../../wp-load.php' );
|
||
|
require_once( ABSPATH . 'wp-admin/includes/user.php' );
|
||
|
|
||
|
class QuestionsTests extends PHPUnit_Extensions_SeleniumTestCase{
|
||
|
|
||
|
var $browser_url = 'http://localhost/questions/';
|
||
|
var $is_local = FALSE;
|
||
|
|
||
|
var $browser = '*firefox';
|
||
|
var $users = array(
|
||
|
'test1' => array(
|
||
|
'name' => 'test1',
|
||
|
'pass' => '1234567890',
|
||
|
'role' => 'administrator',
|
||
|
),
|
||
|
'test2' => array(
|
||
|
'name' => 'test2',
|
||
|
'pass' => '1234567890',
|
||
|
'role' => 'editor',
|
||
|
),
|
||
|
'test3' => array(
|
||
|
'name' => 'test3',
|
||
|
'pass' => '1234567890',
|
||
|
'role' => 'author',
|
||
|
),
|
||
|
'test4' => array(
|
||
|
'name' => 'test4',
|
||
|
'pass' => '1234567890',
|
||
|
'role' => 'contributor',
|
||
|
),
|
||
|
'test5' => array(
|
||
|
'name' => 'test5',
|
||
|
'pass' => '1234567890',
|
||
|
'role' => 'subscriber',
|
||
|
),
|
||
|
/*'test2' => 'test2',
|
||
|
'test3' => 'test3',
|
||
|
'test4' => 'test4',
|
||
|
'test5' => 'test5',
|
||
|
'test6' => 'test6',
|
||
|
'test7' => 'test7',
|
||
|
'test8' => 'test8',
|
||
|
'test9' => 'test9',
|
||
|
'test10' => 'test10',*/
|
||
|
);
|
||
|
|
||
|
|
||
|
var $survey_id = 4;
|
||
|
var $con;
|
||
|
|
||
|
// protected $screenshotPath = 'C:/xampp/htdocs/questions';
|
||
|
protected $screenshotPath = '/Users/svenw/htdocs/questions/';
|
||
|
protected $captureScreenshotOnFailure = TRUE;
|
||
|
protected $screenshotUrl = 'http://localhost/questions';
|
||
|
|
||
|
public function setUp(){
|
||
|
$this->setBrowser( $this->browser );
|
||
|
$this->setBrowserUrl( $this->browser_url );
|
||
|
}
|
||
|
|
||
|
public function test(){
|
||
|
$user_ids = array();
|
||
|
$this->generate_scripts();
|
||
|
|
||
|
foreach( $this->users as $user ):
|
||
|
// Create the user
|
||
|
$user_data = array (
|
||
|
'user_login' => $user['name'],
|
||
|
'user_pass' => $user['pass'],
|
||
|
'user_email' => $user['name'] . '@test.com',
|
||
|
'role' => $user['role']
|
||
|
);
|
||
|
|
||
|
$user_id = wp_insert_user( $user_data );
|
||
|
$this->add_user_to_survey( $user_id, $this->survey_id );
|
||
|
|
||
|
$this->log_line( 'Added User ID: ' . $user_id . ' on Survey ID: ' . $survey_id );
|
||
|
|
||
|
$this->open( "wp-login.php" );
|
||
|
$this->type( "id=user_login", $user['name'] );
|
||
|
$this->type( "id=user_pass", $user['pass'] );
|
||
|
$this->click( "id=wp-submit" );
|
||
|
sleep( 2 );
|
||
|
|
||
|
$this->open("survey/check-melle/");
|
||
|
$this->waitForPageToLoad("30000");
|
||
|
|
||
|
$this->run1( $user_id );
|
||
|
|
||
|
wp_delete_user( $user_id );
|
||
|
|
||
|
endforeach;
|
||
|
}
|
||
|
|
||
|
private function run1( $user_id ){
|
||
|
$values = array();
|
||
|
$values[ 101 ] = array( 8, 16, 24, 32, 40, 48 );
|
||
|
|
||
|
foreach( $values[ 101 ] AS $value ):
|
||
|
endforeach;
|
||
|
$values[ 105 ] = '7';
|
||
|
$values[ 106 ] = '5';
|
||
|
$values[ 109 ] = '7';
|
||
|
$values[ 110 ] = '5';
|
||
|
$values[ 113 ] = '7';
|
||
|
$values[ 114 ] = '5';
|
||
|
$values[ 115 ] = '5';
|
||
|
$values[ 117 ] = '180';
|
||
|
$values[ 118 ] = '100';
|
||
|
$values[ 119 ] = 'Ja';
|
||
|
$values[ 120 ] = '21-30';
|
||
|
$values[ 122 ] = array( 9, 18, 27, 36, 45, 54, 63, 72 );
|
||
|
|
||
|
include( 'testrun.php' );
|
||
|
}
|
||
|
|
||
|
private function check_db_values( $sqls, $user_id ){
|
||
|
global $wpdb;
|
||
|
$results_log = '';
|
||
|
|
||
|
foreach( $sqls AS $query ):
|
||
|
if( is_array( $query ) ):
|
||
|
foreach( $query AS $subquery ):
|
||
|
$wpdb->get_results( $subquery );
|
||
|
if( $wpdb->num_rows === 0 ):
|
||
|
$results_log .= 'FAILED: ' . $subquery . chr(13);
|
||
|
else:
|
||
|
$results_log .= 'MATCHED: ' . $subquery. chr( 13 );
|
||
|
endif;
|
||
|
endforeach;
|
||
|
else:
|
||
|
$wpdb->get_results( $query );
|
||
|
if( $wpdb->num_rows === 0 ):
|
||
|
$results_log .= 'FAILED: ' . $query . chr(13);
|
||
|
else:
|
||
|
$results_log .= 'MATCHED: ' . $query . chr( 13 );
|
||
|
endif;
|
||
|
endif;
|
||
|
|
||
|
endforeach;
|
||
|
|
||
|
$file = fopen( 'results_user_' . $user_id . '.log', 'w' );
|
||
|
fputs( $file, $results_log );
|
||
|
fclose( $file );
|
||
|
|
||
|
}
|
||
|
|
||
|
private function add_user_to_survey( $user_id, $survey_id ){
|
||
|
global $wpdb;
|
||
|
|
||
|
$wpdb->insert(
|
||
|
$wpdb->prefix . 'questions_participiants',
|
||
|
array(
|
||
|
'survey_id' => $survey_id,
|
||
|
'user_id' => $user_id
|
||
|
),
|
||
|
array(
|
||
|
'%d',
|
||
|
'%d'
|
||
|
)
|
||
|
);
|
||
|
|
||
|
$this->log_line( print_r( $wpdb, TRUE ) );
|
||
|
|
||
|
}
|
||
|
|
||
|
private function generate_scripts(){
|
||
|
global $wpdb;
|
||
|
|
||
|
$survey = new Questions_Form( $this->survey_id );
|
||
|
|
||
|
$values_code = '$values = array();' . chr( 13 );
|
||
|
$click_code = '';
|
||
|
$select_code = '';
|
||
|
|
||
|
foreach( $survey->elements AS $element ):
|
||
|
|
||
|
print_r( $element );
|
||
|
switch( get_class( $element ) ){
|
||
|
case 'Questions_SurveyElement_Text':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->type("name=questions_response[' . $element->id . ']", $values[ ' . $element->id . ' ] );' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
break;
|
||
|
case 'Questions_SurveyElement_Textarea':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->type("name=questions_response[' . $element->id . ']", $values[ ' . $element->id . ' ] );' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
break;
|
||
|
case 'Qeustions_SurveyElement_OneChoice':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->type("name=questions_response[' . $element->id . ']", $values[ ' . $element->id . ' ] );' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
break;
|
||
|
break;
|
||
|
case 'Qustions_SurveyElement_MultipleChoice':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = array(\'\');' . chr( 13 );
|
||
|
|
||
|
$click_code.= '$this->click("name=questions_response[' . $element->id . '][]");' . chr( 13 );
|
||
|
$click_code.= 'foreach( $values[ ' . $element->id . ' ] AS $value ) ';
|
||
|
$click_code.= '$this->click("document.questions.elements[\'questions_response[' . $element->id . '][]\'][" . $value . "]");' . chr( 13 );
|
||
|
|
||
|
break;
|
||
|
|
||
|
case 'Questions_SurveyElement_Dropdown':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->select("name=questions_response[' . $element->id . ']", "label=" . $values[ ' . $element->id . ' ]);' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
|
||
|
break;
|
||
|
case 'Questions_SurveyElement_Matrix':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = array(\'\');' . chr( 13 );
|
||
|
|
||
|
$combine_values = array();
|
||
|
$columns = $element->get_columns();
|
||
|
$rows = $element->get_rows();
|
||
|
|
||
|
$i = 0;
|
||
|
|
||
|
foreach( $rows AS $row ):
|
||
|
foreach( $columns AS $column ):
|
||
|
$combine_values[] = $i++ . ' => \'' . $row['id'] . ':' . $column['id'] . '\'';
|
||
|
endforeach;
|
||
|
endforeach;
|
||
|
|
||
|
$select_code.= '$combined_values[ ' . $element->id .' ] = array( ' . implode( ', ', $combine_values ) . ');' . chr( 13 );
|
||
|
|
||
|
$click_code.= '$this->click("name=questions_response[' . $element->id . '][]");' . chr( 13 );
|
||
|
$click_code.= 'foreach( $values[ ' . $element->id . ' ] AS $value ) ';
|
||
|
$click_code.= '$this->click("document.questions.elements[\'questions_response[' . $element->id . '][]\'][" . $value . "]");' . chr( 13 );
|
||
|
|
||
|
$select_code.= 'foreach( $values[ ' . $element->id . ' ] AS $value ) ';
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ][] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $combined_values[' . $element->id . '][ $value ] . "\'";' . chr( 13 );
|
||
|
|
||
|
break;
|
||
|
case 'Questions_SurveyElement_Range':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->type("name=questions_response[' . $element->id . ']", $values[ ' . $element->id . ' ] );' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
break;
|
||
|
case 'Questions_SurveyElement_RangeEmotional':
|
||
|
$values_code.= '$values[ ' . $element->id .' ] = \'\';' . chr( 13 );
|
||
|
$click_code.= '$this->type("name=questions_response[' . $element->id . ']", $values[ ' . $element->id . ' ] );' . chr( 13 );
|
||
|
$select_code.= '$sql[ ' . $element->id . ' ] = "SELECT * FROM ' . $wpdb->prefix. 'questions_respond_answers WHERE question_id=\'' . $element->id . '\' AND respond_id=\'" . $response_id. "\' AND value=\'" . $values[' . $element->id . '] . "\'";' . chr( 13 );
|
||
|
break;
|
||
|
|
||
|
case 'Questions_SurveyElement_Splitter':
|
||
|
$click_code.= '$this->click("name=questions_submission");' . chr( 13 );
|
||
|
$click_code.= '$this->waitForPageToLoad("30000");' . chr( 13 );
|
||
|
$click_code.= 'sleep(2);' . chr( 13 );
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
endforeach;
|
||
|
|
||
|
$click_code.= '$this->click("name=questions_submission");' . chr( 13 );
|
||
|
$click_code.= '$this->waitForPageToLoad("30000");' . chr( 13 );
|
||
|
$click_code.= 'sleep(2);' . chr( 13 );
|
||
|
|
||
|
$click_code.= '$response_id = $this->getValue( \'response_id\' );' . chr( 13 );
|
||
|
|
||
|
$select_code.= '$this->check_db_values( $sql, $user_id );' . chr( 13 );
|
||
|
|
||
|
$code = '<?php' . chr( 13 ) . chr( 13 );
|
||
|
$code.= '/* You can fill in this value array within your test function' . chr( 13 ) . $values_code . '*/' . chr(13) . chr(13);
|
||
|
$code.= $click_code . chr( 13 );
|
||
|
$code.= $select_code . chr( 13 );
|
||
|
|
||
|
$file = fopen( 'testrun.php', 'w' );
|
||
|
fputs( $file, $code );
|
||
|
fclose( $file );
|
||
|
}
|
||
|
|
||
|
private function log_line( $line ){
|
||
|
$file = fopen( 'questions.log', 'w' );
|
||
|
fputs( $file, $line . chr( 13 ) );
|
||
|
fclose( $file );
|
||
|
}
|
||
|
}
|