From a50c27de67ad0a8c73c9de4e414872718ba20518 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Thu, 4 Dec 2008 23:35:40 +0000 Subject: [PATCH] add POD, fix a few typos. Add tests for updateQuestionAnswers --- lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm | 19 +- t/Asset/Wobject/Survey/SurveyJSON.t | 521 +++++++++++++++++- 2 files changed, 537 insertions(+), 3 deletions(-) diff --git a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm index 1da9ad7eb..e58961537 100644 --- a/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm +++ b/lib/WebGUI/Asset/Wobject/Survey/SurveyJSON.pm @@ -703,6 +703,21 @@ sub newAnswer { return \%members; } +=head2 updateQuestionAnswers ($address, $type); + +Add answers to a question, based on the requested type. + +=head3 $address + +Which question to add answers to. + +=head3 $type + +The question type to use to determine how many and what kind of answers +to add to the question. + +=cut + sub updateQuestionAnswers { my $self = shift; my $address = shift; @@ -722,7 +737,7 @@ sub updateQuestionAnswers { elsif ( $type eq 'Currency' ) { push( @{ $question->{answers} }, $self->newAnswer() ); $addy[2] = 0; - $self->update( \@addy, { 'text', 'Currency Amount' } ); + $self->update( \@addy, { 'text', 'Currency Amount:' } ); } elsif ( $type eq 'Text Date' ) { push( @{ $question->{answers} }, $self->newAnswer() ); @@ -814,7 +829,7 @@ sub updateQuestionAnswers { $self->addAnswersToQuestion( \@addy, \@ans, {} ); } elsif ( $type eq 'Oppose/Support' ) { - my @ans = ( 'Strongly oppose', '', '', '', '', '', 'Strongly Support' ); + my @ans = ( 'Strongly oppose', '', '', '', '', '', 'Strongly support' ); $self->addAnswersToQuestion( \@addy, \@ans, {} ); } elsif ( $type eq 'Agree/Disagree' ) { diff --git a/t/Asset/Wobject/Survey/SurveyJSON.t b/t/Asset/Wobject/Survey/SurveyJSON.t index 657d49182..4ed6ccecd 100644 --- a/t/Asset/Wobject/Survey/SurveyJSON.t +++ b/t/Asset/Wobject/Survey/SurveyJSON.t @@ -21,7 +21,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -my $tests = 60; +my $tests = 87; plan tests => $tests + 1 + 3; #---------------------------------------------------------------------------- @@ -1226,6 +1226,525 @@ cmp_deeply( 'addAnswersToQuestion: setup verbatims on two answers' ); +#################################################### +# +# updateQuestionAnswers +# +#################################################### + +$surveyJSON->updateQuestionAnswers([3,0], 'Some type of test that should never exist'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => '', + verbatim => 0, + recordedAnswer => '', + }), + ], + 'updateQuestionAnswers: Handling undefined question types; no text, no verbatim, and no recorded answer' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Gender'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Male', + verbatim => 0, + recordedAnswer => 1, + }), + superhashof({ + text => 'Female', + verbatim => 0, + recordedAnswer => 2, + }), + ], + 'updateQuestionAnswers: Gender type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Yes/No'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Yes', + verbatim => 0, + recordedAnswer => 1, + }), + superhashof({ + text => 'No', + verbatim => 0, + recordedAnswer => 2, + }), + ], + 'updateQuestionAnswers: Yes/No type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'True/False'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'True', + verbatim => 0, + recordedAnswer => 1, + }), + superhashof({ + text => 'False', + verbatim => 0, + recordedAnswer => 2, + }), + ], + 'updateQuestionAnswers: Yes/No type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Agree/Disagree'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Strongly disagree', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 5, + superhashof({ + text => 'Strongly agree', + verbatim => 0, + recordedAnswer => 7, + }), + ], + 'updateQuestionAnswers: Agree/Disagree type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Oppose/Support'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Strongly oppose', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 5, + superhashof({ + text => 'Strongly support', + verbatim => 0, + recordedAnswer => 7, + }), + ], + 'updateQuestionAnswers: Agree/Disagree type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Importance'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all important', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely important', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Importance type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Likelihood'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all likely', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely likely', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Likelihood type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Certainty'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all certain', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely certain', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Certainty type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Satisfaction'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all satisfied', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely satisfied', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Satisfaction type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Confidence'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all confident', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely confident', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Confidence type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Effectiveness'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all effective', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely effective', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Effectiveness type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Concern'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all concerned', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely concerned', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Concern type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Risk'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'No risk', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extreme risk', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Risk type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Threat'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'No threat', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extreme threat', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Threat type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Security'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Not at all secure', + verbatim => 0, + recordedAnswer => 1, + }), + ( superhashof({ + text => '', + verbatim => 0, + recordedAnswer => ignore(), + }) )x 9, + superhashof({ + text => 'Extremely secure', + verbatim => 0, + recordedAnswer => 11, + }), + ], + 'updateQuestionAnswers: Security type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Ideology'); +my $index = 1; +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + map { + superhashof({ + text => $_, + verbatim => 0, + recordedAnswer => $index++, + }) + } + 'Strongly liberal', + 'Liberal', + 'Somewhat liberal', + 'Middle of the road', + 'Slightly conservative', + 'Conservative', + 'Strongly conservative', + ], + 'updateQuestionAnswers: Ideology type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Race'); +$index = 1; +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + map { + superhashof({ + text => $_, + verbatim => $index == 6 ? 1 : 0, + recordedAnswer => $index++, + }) + } 'American Indian', 'Asian', 'Black', 'Hispanic', 'White non-Hispanic', 'Something else (verbatim)', + ], + 'updateQuestionAnswers: Race type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Party'); +$index = 1; +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + map { + superhashof({ + text => $_, + verbatim => $index == 4 ? 1 : 0, + recordedAnswer => $index++, + }) + } 'Democratic party', 'Republican party (or GOP)', 'Independant party', 'Other party (verbatim)', + ], + 'updateQuestionAnswers: Party type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Education'); +$index = 1; +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + map { + superhashof({ + text => $_, + verbatim => $index == 8 ? 1 : 0, + recordedAnswer => $index++, + }) + } + 'Elementary or some high school', + 'High school/GED', + 'Some college/vocational school', + 'College graduate', + 'Some graduate work', + 'Master\'s degree', + 'Doctorate (of any type)', + 'Other degree (verbatim)' + ], + 'updateQuestionAnswers: Education type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Email'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Email:', + verbatim => 0, + recordedAnswer => '', + }), + ], + 'updateQuestionAnswers: Email type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Phone Number'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Phone Number:', + verbatim => 0, + recordedAnswer => '', + }), + ], + 'updateQuestionAnswers: Phone Number type' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Text Date'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Date:', + verbatim => 0, + recordedAnswer => '', + }), + ], + 'updateQuestionAnswers: Text Date' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Currency'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + superhashof({ + text => 'Currency Amount:', + verbatim => 0, + recordedAnswer => '', + }), + ], + 'updateQuestionAnswers: Currency' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Date Range'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + (superhashof({ + text => '', + verbatim => 0, + recordedAnswer => '', + })) x 2, + ], + 'updateQuestionAnswers: Date Range' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Multi Slider - Allocate'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + (superhashof({ + text => '', + verbatim => 0, + recordedAnswer => '', + })) x 2, + ], + 'updateQuestionAnswers: Multi Slider - Allocate' +); + +$surveyJSON->updateQuestionAnswers([3,0], 'Dual Slider - Range'); +cmp_deeply( + $surveyJSON->question([3,0])->{answers}, + [ + (superhashof({ + text => '', + verbatim => 0, + recordedAnswer => '', + })) x 2, + ], + 'updateQuestionAnswers: Dual Slider - Range' +); + } ####################################################