Convert Survey::Test over to Moose.

This commit is contained in:
Colin Kuskie 2010-11-10 11:20:28 -08:00
parent 91460a93d1
commit c57649585a
2 changed files with 46 additions and 76 deletions

View file

@ -2797,7 +2797,7 @@ sub www_editTest {
else {
##We need a temporary test so that we can call dynamicForm, below
$testId = 'new';
$test = WebGUI::Asset::Wobject::Survey::Test->create($session, { assetId => $self->getId });
$test = WebGUI::Asset::Wobject::Survey::Test->new($session, { assetId => $self->getId });
}
##Build the form
@ -2805,7 +2805,7 @@ sub www_editTest {
$form->hidden( name=>"func", value=>"editTestSave");
$form->hidden( name=>"testId", value=>$testId);
$form->hidden( name=>"assetId", value=>$self->getId);
$form->dynamicForm([WebGUI::Asset::Wobject::Survey::Test->crud_definition($session)], 'properties', $test);
$test->crud_form($form, $test);
$form->submit;
if ($testId eq 'new') {
@ -2849,7 +2849,7 @@ sub www_editTestSave {
my $testId = $form->get('testId');
my $test;
if ($testId eq 'new') {
$test = WebGUI::Asset::Wobject::Survey::Test->create($session, { assetId => $self->getId });
$test = WebGUI::Asset::Wobject::Survey::Test->new($session, { assetId => $self->getId });
}
else {
$test = WebGUI::Asset::Wobject::Survey::Test->new($session, $testId);

View file

@ -1,7 +1,47 @@
package WebGUI::Asset::Wobject::Survey::Test;
use strict;
use base qw/WebGUI::Crud/;
use Moose;
use WebGUI::Definition::Crud;
extends qw/WebGUI::Crud/;
define tableName => 'Survey_test';
define tableKey => 'testId';
define sequenceKey => 'assetId';
has testId => (
required => 1,
is => 'ro',
);
property assetId => (
label => 'assetId',
fieldType => 'hidden',
default => undef,
);
property name => (
fieldType => 'text',
label => [ 'test name', 'Asset_Survey' , ''],
hoverHelp => [ 'test name help', 'Asset_Survey' , ''],
default => '',
);
property test => (
fieldType => 'codearea',
label => [ 'test spec', 'Asset_Survey' , ''],
hoverHelp => [ 'test spec help', 'Asset_Survey' , ''],
syntax => 'js',
default => <<END_SPEC,
[
{
"name": "My Test",
"test": {
"variable1": "yes",
"next": "section2",
);
},
]
END_SPEC
);
use WebGUI::International;
use Test::Deep::NoTest;
use JSON::PP;
@ -25,76 +65,6 @@ These methods are available from this class:
#-------------------------------------------------------------------
=head2 crud_definition ( )
WebGUI::Crud definition for this class.
=head3 tableName
Survey_test
=head3 tableKey
testId
=head3 sequenceKey
assetId, e.g. each Survey instance has its own sequence of tests.
=head3 properties
=head4 assetId
Identifies the Survey instance.
=head4 name
A name for the test
=head4 test
The test spec
=cut
sub crud_definition {
my ( $class, $session ) = @_;
my $definition = $class->SUPER::crud_definition($session);
$definition->{tableName} = 'Survey_test';
$definition->{tableKey} = 'testId';
$definition->{sequenceKey} = 'assetId';
my $properties = $definition->{properties};
my $i18n = WebGUI::International->new($session);
$properties->{assetId} = {
fieldType => 'hidden',
defaultValue => undef,
};
$properties->{name} = {
fieldType => 'text',
label => $i18n->get( 'test name', 'Asset_Survey' ),
hoverHelp => $i18n->get( 'test name help', 'Asset_Survey' ),
defaultValue => '',
};
$properties->{test} = {
fieldType => 'codearea',
label => $i18n->get( 'test spec', 'Asset_Survey' ),
hoverHelp => $i18n->get( 'test spec help', 'Asset_Survey' ),
syntax => 'js',
defaultValue => <<END_SPEC,
[
{
"name": "My Test",
"test": {
"variable1": "yes",
"next": "section2",
},
},
]
END_SPEC
};
return $definition;
}
=head2 run
Run this test. Returns TAP in a hashref.
@ -110,7 +80,7 @@ sub run {
return { tap => 'Bail Out! enableSurveyExpressionEngine config option disabled' };
}
my $spec = $self->get('test')
my $spec = $self->test
or return { tap => "Bail Out! Test spec undefined" };
# Use JSON::PP rather than JSON::XS so that we can use things like allow_barekey
@ -126,7 +96,7 @@ sub run {
return { tap => "Bail Out! Invalid test spec: $error" };
}
my $assetId = $self->get('assetId');
my $assetId = $self->assetId;
my $survey = WebGUI::Asset::Wobject::Survey->newById($session, $assetId);
if (!$survey || !$survey->isa('WebGUI::Asset::Wobject::Survey') ) {
return { tap => "Bail Out! Unable to instantiate Survey using assetId: $assetId" };