#------------------------------------------------------------------- # 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 editThingDataSave, particularly those things not tested in Thingy.t use WebGUI::Test; use WebGUI::Session; use Test::More tests => 6; # 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); # Test adding, editing, getting and deleting thing data my ($newThingDataId, $errors); ($newThingDataId, $errors) = $thingy->editThingDataSave($thingId, 'new', { "field_".$field1Id => 'test value', "field_".$field2Id => 'test value', }, ); cmp_deeply( $errors, [], 'no errors for a valid thing data save' ); ok $session->id->valid($newThingDataId), 'valid GUID for saved field'; my $row_exists = $session->db->quickScalar('select count(*) from `Thingy_'.$thingId.'`'); is $row_exists, 1, 'data written to the database'; ($newThingDataId, $errors) = $thingy->editThingDataSave($thingId, 'new', { "field_".$field1Id => 'another test value', }, ); is scalar @{ $errors }, 1, 'one error due to missing, required field'; is $newThingDataId, '', '... no row id returned'; $row_exists = $session->db->quickScalar('select count(*) from `Thingy_'.$thingId.'`'); is $row_exists, 1, '... no new data written to the datbase';