fix: defaultThingId was not automatically set after creating first thing, also added a test for this.
This commit is contained in:
parent
a4d9c81391
commit
f70549720b
2 changed files with 25 additions and 13 deletions
|
|
@ -24,7 +24,7 @@ our $VERSION = "1.0.0";
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 addField ( field, retainIds )
|
=head2 addField ( field, isImport )
|
||||||
|
|
||||||
Adds a new field.
|
Adds a new field.
|
||||||
|
|
||||||
|
|
@ -32,9 +32,9 @@ Adds a new field.
|
||||||
|
|
||||||
A hashref containing the properties of the new field.
|
A hashref containing the properties of the new field.
|
||||||
|
|
||||||
=head3 retainIds
|
=head3 isImport
|
||||||
|
|
||||||
If retainIds is true the new field will keep the fieldId and assetId in the properties hashref. The thingId is
|
If isImport is true the new field will keep the fieldId and assetId in the properties hashref. The thingId is
|
||||||
always taken from the field hashref.
|
always taken from the field hashref.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
@ -43,7 +43,7 @@ sub addField {
|
||||||
|
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $field = shift;
|
my $field = shift;
|
||||||
my $retainIds = shift;
|
my $isImport = shift;
|
||||||
my $dbDataType = shift || $self->_getDbDataType($field->{fieldType});
|
my $dbDataType = shift || $self->_getDbDataType($field->{fieldType});
|
||||||
my $db = $self->session->db;
|
my $db = $self->session->db;
|
||||||
my $error = $self->session->errorHandler;
|
my $error = $self->session->errorHandler;
|
||||||
|
|
@ -51,7 +51,7 @@ sub addField {
|
||||||
|
|
||||||
$error->info("Adding Field, label: ".$field->{label}.", fieldId: ".$field->{fieldId}.",thingId: ".$field->{thingId});
|
$error->info("Adding Field, label: ".$field->{label}.", fieldId: ".$field->{fieldId}.",thingId: ".$field->{thingId});
|
||||||
|
|
||||||
if ($retainIds){
|
if ($isImport){
|
||||||
$oldFieldId = $field->{fieldId};
|
$oldFieldId = $field->{fieldId};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -62,7 +62,7 @@ sub addField {
|
||||||
$field->{fieldId} = "new";
|
$field->{fieldId} = "new";
|
||||||
$newFieldId = $self->setCollateral("Thingy_fields","fieldId",$field,1,$useAssetId);
|
$newFieldId = $self->setCollateral("Thingy_fields","fieldId",$field,1,$useAssetId);
|
||||||
|
|
||||||
if ($retainIds){
|
if ($isImport){
|
||||||
$db->write("update Thingy_fields set fieldId = ".$db->quote($oldFieldId)
|
$db->write("update Thingy_fields set fieldId = ".$db->quote($oldFieldId)
|
||||||
." where fieldId = ".$db->quote($newFieldId));
|
." where fieldId = ".$db->quote($newFieldId));
|
||||||
$newFieldId = $oldFieldId;
|
$newFieldId = $oldFieldId;
|
||||||
|
|
@ -80,7 +80,7 @@ sub addField {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 addThing ( thing, retainIds )
|
=head2 addThing ( thing, isImport )
|
||||||
|
|
||||||
Adds a new thing.
|
Adds a new thing.
|
||||||
|
|
||||||
|
|
@ -88,9 +88,9 @@ Adds a new thing.
|
||||||
|
|
||||||
A hashref containing the properties of the new thing.
|
A hashref containing the properties of the new thing.
|
||||||
|
|
||||||
=head3 retainIds
|
=head3 isImport
|
||||||
|
|
||||||
If retainIds is true the new thing will keep the thingId and assetId in the properties hashref.
|
If isImport is true the new thing will keep the thingId and assetId in the properties hashref.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|
@ -98,14 +98,14 @@ sub addThing {
|
||||||
|
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $thing = shift;
|
my $thing = shift;
|
||||||
my $retainIds = shift;
|
my $isImport = shift;
|
||||||
my $db = $self->session->db;
|
my $db = $self->session->db;
|
||||||
my $error = $self->session->errorHandler;
|
my $error = $self->session->errorHandler;
|
||||||
my ($oldThingId, $newThingId,$useAssetId);
|
my ($oldThingId, $newThingId,$useAssetId);
|
||||||
|
|
||||||
$error->info("Adding Thing, label: ".$thing->{label}.", id: ".$thing->{thingId});
|
$error->info("Adding Thing, label: ".$thing->{label}.", id: ".$thing->{thingId});
|
||||||
|
|
||||||
if ($retainIds){
|
if ($isImport){
|
||||||
$oldThingId = $thing->{thingId};
|
$oldThingId = $thing->{thingId};
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
@ -115,11 +115,19 @@ sub addThing {
|
||||||
$thing->{thingId} = "new";
|
$thing->{thingId} = "new";
|
||||||
$newThingId = $self->setCollateral("Thingy_things","thingId",$thing,0,$useAssetId);
|
$newThingId = $self->setCollateral("Thingy_things","thingId",$thing,0,$useAssetId);
|
||||||
|
|
||||||
if ($retainIds){
|
if ($isImport){
|
||||||
$db->write("update Thingy_things set thingId = ".$db->quote($oldThingId)
|
$db->write("update Thingy_things set thingId = ".$db->quote($oldThingId)
|
||||||
." where thingId = ".$db->quote($newThingId));
|
." where thingId = ".$db->quote($newThingId));
|
||||||
$newThingId = $oldThingId;
|
$newThingId = $oldThingId;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
# Set this Thingy assets defaultThingId if this is its first Thing.
|
||||||
|
my ($numberOfThings) = $db->quickArray('select count(*) from Thingy_things where assetId=?'
|
||||||
|
,[$self->getId]);
|
||||||
|
if ($numberOfThings == 1){
|
||||||
|
$self->update({defaultThingId => $newThingId});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$db->write("create table ".$db->dbh->quote_identifier("Thingy_".$newThingId)."(
|
$db->write("create table ".$db->dbh->quote_identifier("Thingy_".$newThingId)."(
|
||||||
thingDataId varchar(22) binary not null,
|
thingDataId varchar(22) binary not null,
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ use lib "$FindBin::Bin/../../lib";
|
||||||
use WebGUI::Test;
|
use WebGUI::Test;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
use WebGUI::PseudoRequest;
|
use WebGUI::PseudoRequest;
|
||||||
use Test::More tests => 7; # increment this value for each test you create
|
use Test::More tests => 8; # increment this value for each test you create
|
||||||
use WebGUI::Asset::Wobject::Thingy;
|
use WebGUI::Asset::Wobject::Thingy;
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
@ -78,6 +78,10 @@ my ($thingTableNameCheck) = $session->db->quickArray("show tables like ".$sessio
|
||||||
|
|
||||||
is($thingTableNameCheck,$thingTableName,"An empty table: ".$thingTableName." for the new thing exists.");
|
is($thingTableNameCheck,$thingTableName,"An empty table: ".$thingTableName." for the new thing exists.");
|
||||||
|
|
||||||
|
is($thingy->get('defaultThingId'),$thingId,"The Thingy assets defaultThingId was set correctly.");
|
||||||
|
|
||||||
|
# Test adding a field
|
||||||
|
|
||||||
my %fieldProperties = (
|
my %fieldProperties = (
|
||||||
thingId=>$thingId,
|
thingId=>$thingId,
|
||||||
fieldId=>"new",
|
fieldId=>"new",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue