Merge pull request #20 from zylopfa/master

RFE 12207 : www_editThingDataSaveViaAjax should return more info if thingdata fails to be saved.
This commit is contained in:
Doug Bell 2011-07-28 17:10:26 -07:00
commit 3a535b3572
3 changed files with 169 additions and 2 deletions

View file

@ -1,4 +1,5 @@
7.10.22
- rfe #12207: Thingy. Field_name info returned by www_editThingDataSaveViaAjax
- fixed #12206: Bad Subscription Groups in Duplicated Threads
7.10.21

View file

@ -664,7 +664,7 @@ sub editThingDataSave {
}
if ($field->{status} eq "required" && ($fieldValue =~ /^\s$/x || $fieldValue eq "" || !(defined $fieldValue))) {
push (@errors,{
"error_message"=>$field->{label}." ".$i18n->get('is required error').".",
"error_message"=>$field->{label}." ".$i18n->get('is required error').".", "field_name"=>$fieldName,
});
}
if ($field->{status} eq "hidden") {
@ -680,7 +680,7 @@ sub editThingDataSave {
unless ( $self->isUniqueEntry($thingId,$fieldName,$fieldValue,$thingDataId)) {
push (@errors,{
"error_message"=>$field->{label}. $i18n->get('needs to be unique error'),
"error_message"=>$field->{label}. $i18n->get('needs to be unique error'),"field_name"=>$fieldName,
});
}
}

View file

@ -0,0 +1,166 @@
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
#-------------------------------------------------------------------
# Please read the legal notices (docs/legal.txt) and the license
# (docs/license.txt) that came with this distribution before using
# this software.
#-------------------------------------------------------------------
# http://www.plainblack.com info@plainblack.com
#-------------------------------------------------------------------
use FindBin;
use strict;
use lib "$FindBin::Bin/../../../lib";
##The goal of this test is to test www_editThingDataSaveViaAjax, particularly those things not tested in Thingy.t
use WebGUI::Test;
use WebGUI::Session;
use Test::More tests => 4; # increment this value for each test you create
use Test::Deep;
use JSON;
use WebGUI::Asset::Wobject::Thingy;
use Data::Dumper;
my $session = WebGUI::Test->session;
# Do our work in the import node
my $node = WebGUI::Asset->getImportNode($session);
my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->set({name=>"Thingy Test"});
WebGUI::Test->addToCleanup($versionTag);
my $thingy = $node->addChild({className=>'WebGUI::Asset::Wobject::Thingy'});
# Test adding a new Thing
my $i18n = WebGUI::International->new($session, "Asset_Thingy");
my $groupIdEdit = $thingy->get("groupIdEdit");
my %thingProperties = (
thingId => "new",
label => $i18n->get('assetName'),
editScreenTitle => $i18n->get('edit screen title label'),
editInstructions => '',
groupIdAdd => $groupIdEdit,
groupIdEdit => $groupIdEdit,
saveButtonLabel => $i18n->get('default save button label'),
afterSave => 'searchThisThing',
editTemplateId => "ThingyTmpl000000000003",
groupIdView => $groupIdEdit,
viewTemplateId => "ThingyTmpl000000000002",
defaultView => 'searchThing',
searchScreenTitle => $i18n->get('search screen title label'),
searchDescription => '',
groupIdSearch => $groupIdEdit,
groupIdExport => $groupIdEdit,
groupIdImport => $groupIdEdit,
searchTemplateId => "ThingyTmpl000000000004",
thingsPerPage => 25,
);
my $thingId = $thingy->addThing(\%thingProperties,0);
# Test adding a field
my %fieldProperties = (
thingId => $thingId,
fieldId => "new",
label => "Optional",
dateCreated => time(),
fieldType => "text",
status => "editable",
display => 1,
);
my $field1Id = $thingy->addField(\%fieldProperties, 0);
$fieldProperties{status} = 'required';
$fieldProperties{label} = 'Required';
my $field2Id = $thingy->addField(\%fieldProperties, 0);
#################################################################
#
# www_editThingDataSaveViaAjax
#
#################################################################
$session->request->setup_body({
thingId => $thingId,
thingDataId => 'new',
"field_".$field1Id => 'test value',
"field_".$field2Id => 'required', # required
});
$session->user({userId => '3'});
$session->http->setStatus(200);
my $json = $thingy->www_editThingDataSaveViaAjax();
is $json, '{}', 'www_editThingDataSaveViaAjax: Empty JSON hash';
is $session->http->getStatus, 200, '... http status=200';
$session->request->setup_body({
thingId => $thingId,
thingDataId => 'new',
"field_".$field1Id => 'test value',
"field_".$field2Id => '',
});
my $json = from_json( $thingy->www_editThingDataSaveViaAjax());
cmp_bag ($json,
[
superhashof ({
field_name => "field_".$field2Id,
}),
],
'checking for field_name in error json'
) or diag Dumper($json);
$fieldProperties{status} = 'required';
$fieldProperties{label} = 'Required2';
my $field3Id = $thingy->addField(\%fieldProperties, 0);
$fieldProperties{status} = 'required';
$fieldProperties{label} = 'Required3';
my $field4Id = $thingy->addField(\%fieldProperties, 0);
$session->request->setup_body({
thingId => $thingId,
thingDataId => 'new',
"field_".$field1Id => 'test value',
"field_".$field2Id => '',
"field_".$field3Id => '',
"field_".$field4Id => '',
});
$json = from_json( $thingy->www_editThingDataSaveViaAjax());
cmp_bag ($json,
[
superhashof ({
field_name => "field_".$field2Id,
}),
superhashof ({
field_name => "field_".$field3Id,
}),
superhashof ({
field_name => "field_".$field4Id,
}),
],
'checking for field_name in error json (3 required fields)'
) or diag Dumper($json);