Add tests for getQuestionEditVars.
Refactor out the list of valid question types to make testing easier.
This commit is contained in:
parent
0453f47bc1
commit
24fe2e6dc0
2 changed files with 102 additions and 71 deletions
|
|
@ -288,8 +288,8 @@ sub getSectionEditVars {
|
|||
=head2 getQuestionEditVars ( $address )
|
||||
|
||||
Get a safe copy of the variables for this question, to use for editing purposes. Adds
|
||||
two variables, id, which is the indeces of the answer's position in its parent's question
|
||||
and section arrays joined by dashes '-', and displayed_id, which is this answer's index
|
||||
two variables, id, which is the indeces of the question's position in its parent's
|
||||
section array joined by dashes '-', and displayed_id, which is this question's index
|
||||
in a 1-based array (versus the default, perl style, 0-based array).
|
||||
|
||||
It removes the answers array ref, and changes questionType from a single element, into
|
||||
|
|
@ -311,17 +311,7 @@ sub getQuestionEditVars {
|
|||
$var{displayed_id} = $address->[1] + 1;
|
||||
delete $var{answers};
|
||||
delete $var{questionType};
|
||||
my @types = (
|
||||
'Agree/Disagree', 'Certainty', 'Concern', 'Confidence',
|
||||
'Currency', 'Date', 'Date Range', 'Dual Slider - Range',
|
||||
'Education', 'Effectiveness', 'Email', 'File Upload',
|
||||
'Gender', 'Hidden', 'Ideology', 'Importance',
|
||||
'Likelihood', 'Multi Slider - Allocate', 'Multiple Choice', 'Oppose/Support',
|
||||
'Party', 'Phone Number', 'Race', 'Risk',
|
||||
'Satisfaction', 'Scale', 'Security', 'Slider',
|
||||
'Text', 'Text Date', 'Threat', 'True/False',
|
||||
'Yes/No'
|
||||
);
|
||||
my @types = $self->getValidQuestionTypes();
|
||||
|
||||
for (@types) {
|
||||
if ( $_ eq $object->{questionType} ) {
|
||||
|
|
@ -334,6 +324,27 @@ sub getQuestionEditVars {
|
|||
return \%var;
|
||||
} ## end sub getQuestionEditVars
|
||||
|
||||
=head2 getValidQuestionTypes
|
||||
|
||||
A convenience method. Returns a list of question types. If you add a question
|
||||
type to the Survey, you must handle it here, and also in updateQuestionAnswers
|
||||
|
||||
=cut
|
||||
|
||||
sub getValidQuestionTypes {
|
||||
return(
|
||||
'Agree/Disagree', 'Certainty', 'Concern', 'Confidence',
|
||||
'Currency', 'Date', 'Date Range', 'Dual Slider - Range',
|
||||
'Education', 'Effectiveness', 'Email', 'File Upload',
|
||||
'Gender', 'Hidden', 'Ideology', 'Importance',
|
||||
'Likelihood', 'Multi Slider - Allocate', 'Multiple Choice', 'Oppose/Support',
|
||||
'Party', 'Phone Number', 'Race', 'Risk',
|
||||
'Satisfaction', 'Scale', 'Security', 'Slider',
|
||||
'Text', 'Text Date', 'Threat', 'True/False',
|
||||
'Yes/No'
|
||||
);
|
||||
}
|
||||
|
||||
=head2 getAnswerEditVars ( $address )
|
||||
|
||||
Get a safe copy of the variables for this answer, to use for editing purposes. Adds
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ my $session = WebGUI::Test->session;
|
|||
|
||||
#----------------------------------------------------------------------------
|
||||
# Tests
|
||||
my $tests = 49;
|
||||
my $tests = 52;
|
||||
plan tests => $tests + 1 + 3;
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
|
@ -802,34 +802,20 @@ cmp_deeply(
|
|||
{
|
||||
title => 'Section 0',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 0-0',
|
||||
answers => [],
|
||||
},
|
||||
{ text => 'Question 0-0', answers => [], },
|
||||
{
|
||||
text => 'Question 0-1',
|
||||
answers => [
|
||||
{
|
||||
text => 'Answer 0-1-0',
|
||||
},
|
||||
{
|
||||
text => 'Answer 0-1-1',
|
||||
},
|
||||
{ text => 'Answer 0-1-0', },
|
||||
{ text => 'Answer 0-1-1', },
|
||||
],
|
||||
},
|
||||
{
|
||||
text => 'Question 0-2',
|
||||
answers => [],
|
||||
},
|
||||
{ text => 'Question 0-2', answers => [], },
|
||||
{
|
||||
text => 'Question 0-1',
|
||||
answers => [
|
||||
{
|
||||
text => 'Answer 0-3-0',
|
||||
},
|
||||
{
|
||||
text => 'Answer 0-1-1',
|
||||
},
|
||||
{ text => 'Answer 0-3-0', },
|
||||
{ text => 'Answer 0-1-1', },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
@ -837,23 +823,14 @@ cmp_deeply(
|
|||
{
|
||||
title => 'Section 1',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 1-0',
|
||||
answers => [],
|
||||
},
|
||||
{ text => 'Question 1-0', answers => [], },
|
||||
],
|
||||
},
|
||||
{
|
||||
title => 'Section 2',
|
||||
questions => [],
|
||||
},
|
||||
{ title => 'Section 2', questions => [], },
|
||||
{
|
||||
title => 'Section 3',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 3-0',
|
||||
answers => [],
|
||||
},
|
||||
{ text => 'Question 3-0', answers => [], },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
@ -871,33 +848,22 @@ cmp_deeply(
|
|||
title => 'Section 0',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 0-0',
|
||||
answers => [],
|
||||
text => 'Question 0-0', answers => [],
|
||||
},
|
||||
{
|
||||
text => 'Question 0-1',
|
||||
answers => [
|
||||
{
|
||||
text => 'Answer 0-1-0',
|
||||
},
|
||||
{
|
||||
text => 'Answer 0-1-1',
|
||||
},
|
||||
{ text => 'Answer 0-1-0', },
|
||||
{ text => 'Answer 0-1-1', },
|
||||
],
|
||||
},
|
||||
{
|
||||
text => 'Question 0-2',
|
||||
answers => [],
|
||||
{ text => 'Question 0-2', answers => [],
|
||||
},
|
||||
{
|
||||
text => 'Question 0-3',
|
||||
answers => [
|
||||
{
|
||||
text => 'Answer 0-3-0',
|
||||
},
|
||||
{
|
||||
text => 'Answer 0-3-1',
|
||||
},
|
||||
{ text => 'Answer 0-3-0', },
|
||||
{ text => 'Answer 0-3-1', },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
@ -905,22 +871,17 @@ cmp_deeply(
|
|||
{
|
||||
title => 'Section 1',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 1-0',
|
||||
answers => [],
|
||||
},
|
||||
{ text => 'Question 1-0', answers => [], },
|
||||
],
|
||||
},
|
||||
{
|
||||
title => 'Section 2',
|
||||
questions => [],
|
||||
title => 'Section 2', questions => [],
|
||||
},
|
||||
{
|
||||
title => 'Section 3',
|
||||
questions => [
|
||||
{
|
||||
text => 'Question 3-0',
|
||||
answers => [],
|
||||
text => 'Question 3-0', answers => [],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
@ -1058,8 +1019,67 @@ cmp_deeply(
|
|||
'getAnswerEditVars: uses a safe copy to build the vars hash'
|
||||
);
|
||||
|
||||
####################################################
|
||||
#
|
||||
# getQuestionEditVars
|
||||
#
|
||||
####################################################
|
||||
|
||||
my @questionTypeVars = map {
|
||||
{
|
||||
text => $_, selected => ($_ eq 'Multiple Choice' ? 1 : 0),
|
||||
}
|
||||
} $surveyJSON->getValidQuestionTypes();
|
||||
|
||||
cmp_deeply(
|
||||
$surveyJSON->getQuestionEditVars([3,0]),
|
||||
superhashof({
|
||||
id => '3-0',
|
||||
displayed_id => '1',
|
||||
text => 'Question 3-0',
|
||||
type => 'question',
|
||||
questionType => \@questionTypeVars,
|
||||
}),
|
||||
'getQuestionEditVars: retrieved correct question'
|
||||
);
|
||||
|
||||
my $questionEditVars = $surveyJSON->getQuestionEditVars([3,0]);
|
||||
$questionEditVars->{commentCols} = 1000;
|
||||
my (undef, $bareQuestion2, undef) = getBareSkeletons();
|
||||
$bareQuestion2->{text} = ignore();
|
||||
cmp_deeply(
|
||||
$surveyJSON->question([3,0]),
|
||||
$bareQuestion2,
|
||||
'getQuestionEditVars: uses a safe copy to build the vars hash'
|
||||
);
|
||||
|
||||
$surveyJSON->question([3,0])->{questionType} = 'Scale';
|
||||
|
||||
@questionTypeVars = map {
|
||||
{
|
||||
text => $_, selected => ($_ eq 'Scale' ? 1 : 0),
|
||||
}
|
||||
} $surveyJSON->getValidQuestionTypes();
|
||||
|
||||
cmp_deeply(
|
||||
$surveyJSON->getQuestionEditVars([3,0]),
|
||||
superhashof({
|
||||
questionType => \@questionTypeVars,
|
||||
}),
|
||||
'getQuestionEditVars: does correct detection of questionType'
|
||||
);
|
||||
|
||||
$surveyJSON->question([3,0])->{questionType} = 'Multiple Choice';
|
||||
|
||||
|
||||
}
|
||||
|
||||
####################################################
|
||||
#
|
||||
# Utility test routines
|
||||
#
|
||||
####################################################
|
||||
|
||||
# Go through a JSON survey type data structure and just grab some unique
|
||||
# elements
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue