diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index ced412fe2..d3678fa4a 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,5 +1,6 @@ 7.9.13 - fixed #11783: Instances deleted during realtime run + - fixed #11781: Thingy wrong retorn value from Ajax method 7.9.12 - webgui.org homepage gives 404 (#11778) diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index 9358fb3a2..916630390 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -2645,9 +2645,10 @@ sub www_editThingDataSaveViaAjax { } my $thingProperties = $self->getThing($thingId); + use Data::Dumper; + warn $thingId; + warn Dumper $thingProperties; if ($thingProperties->{thingId}){ - my ($privilegedGroup,$workflowId); - return $session->privilege->insufficient() unless $self->canEditThingData($thingId, $thingDataId ,$thingProperties); @@ -2658,12 +2659,15 @@ sub www_editThingDataSaveViaAjax { my ($newThingDataId,$errors) = $self->editThingDataSave($thingId,$thingDataId); - if ($errors){ - $session->http->setStatus("400", "Bad Request"); + if (@{ $errors }) { + $session->http->setStatus("400", "Bad Request"); return JSON->new->encode($errors); } + $session->http->setStatus("200"); + return '{}'; } else { + warn "thingId not found in thingProperties\n"; $session->http->setStatus("404", "Not Found"); return JSON->new->encode({message => "The thingId you requested can not be found."}); } diff --git a/t/Asset/Wobject/Thingy.t b/t/Asset/Wobject/Thingy.t index bede0c5a8..6bbfd9f0c 100644 --- a/t/Asset/Wobject/Thingy.t +++ b/t/Asset/Wobject/Thingy.t @@ -16,7 +16,7 @@ use lib "$FindBin::Bin/../../lib"; use WebGUI::Test; use WebGUI::Session; -use Test::More tests => 28; # increment this value for each test you create +use Test::More tests => 30; # increment this value for each test you create use Test::Deep; use JSON; use WebGUI::Asset::Wobject::Thingy; @@ -406,6 +406,7 @@ is($table, undef, '... drops thing specific table'); # getFieldValue # ################################################################# + { my %newThingProperties = %thingProperties; my $newThingId = $thingy->addThing(\%newThingProperties, 0); @@ -421,3 +422,22 @@ is($table, undef, '... drops thing specific table'); like($datetime, qr{^\d+/\d+/\d+\s+\d+:\d+}, "... DateTime field also returns data in user's format"); } +################################################################# +# +# www_editThingDataSaveViaAjax +# +################################################################# + +$session->request->setup_body({ + thingId => $thingId, + thingDataId => 'new', +}); + +$session->user({userId => '3'}); +$session->http->setStatus(200); +my $json = $thingy->www_editThingDataSaveViaAjax(); +diag "json: ".$json; +is $json, '{}', 'www_editThingDataSaveViaAjax: Empty JSON hash'; +is $session->http->getStatus, 200, '... http status=200'; + +$session->request->setup_body({ });