Fix instanciating an object from the database. Write core Crud properties to the db.
This commit is contained in:
parent
2e79a4b52f
commit
87f49191db
2 changed files with 32 additions and 27 deletions
|
|
@ -105,7 +105,7 @@ around BUILDARGS => sub {
|
|||
WebGUI::Error::ObjectNotFound->throw(error=>'no such '.$tableKey, id=>$identifier);
|
||||
}
|
||||
$data->{session} = $session;
|
||||
return $class->$orig(@_);
|
||||
return $class->$orig($data);
|
||||
};
|
||||
|
||||
=head1 NAME
|
||||
|
|
@ -466,7 +466,7 @@ sub crud_updateTable {
|
|||
foreach my $property_name (@property_names) {
|
||||
my $property = $class->meta->find_attribute_by_name($property_name);
|
||||
my $form_properties = $property->form;
|
||||
my $control = WebGUI::Form::DynamicField->new( $session, fieldType => $form_properties->fieldType,);
|
||||
my $control = WebGUI::Form::DynamicField->new( $session, fieldType => $form_properties->{fieldType},);
|
||||
my $fieldType = $control->getDatabaseFieldType;
|
||||
my $isKey = $property->isQueryKey;
|
||||
my $default = $property->default;
|
||||
|
|
@ -972,6 +972,13 @@ sub write {
|
|||
}
|
||||
$data->{$property_name} = $value;
|
||||
}
|
||||
my $tableKey = $self->meta->tableKey;
|
||||
$data->{$tableKey} = $self->$tableKey;
|
||||
$data->{lastUpdated} = $self->lastUpdated;
|
||||
$data->{dateCreated} = $self->dateCreated;
|
||||
if (my $sequenceKey = $self->meta->sequenceKey) {
|
||||
$data->{$sequenceKey} = $self->$sequenceKey;
|
||||
}
|
||||
$session->db->setRow($self->tableName, $self->tableKey, $data);
|
||||
}
|
||||
|
||||
|
|
|
|||
48
t/Crud.t
48
t/Crud.t
|
|
@ -30,11 +30,9 @@ extends 'WebGUI::Crud';
|
|||
define tableName => 'some_crud_table';
|
||||
define tableKey => 'id';
|
||||
|
||||
property id => (
|
||||
has id => (
|
||||
required => 1,
|
||||
is => 'ro',
|
||||
label => 'id',
|
||||
fieldType => 'hidden',
|
||||
);
|
||||
|
||||
package main;
|
||||
|
|
@ -73,15 +71,15 @@ $sth->finish;
|
|||
my $record1 = WebGUI::Cruddy->new($session);
|
||||
can_ok($record1, 'id');
|
||||
isa_ok($record1, "WebGUI::Crud", "isa WebGUI::Crud");
|
||||
like($record1->get('dateCreated'), qr/\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}/, "dateCreated looks like a date");
|
||||
like($record1->get('lastUpdated'), qr/\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}/, "lastUpdated looks like a date");
|
||||
like($record1->get('sequenceNumber'), qr/\d+/, "sequenceNumber looks like a number");
|
||||
is($record1->get('sequenceNumber'), 1, "record 1 sequenceNumber is 1");
|
||||
like($record1->get('id'), qr/[A-Za-z0-9_-]{22}/, "id looks like a guid");
|
||||
like($record1->dateCreated, qr/\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}/, "dateCreated looks like a date");
|
||||
like($record1->lastUpdated, qr/\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}/, "lastUpdated looks like a date");
|
||||
like($record1->sequenceNumber, qr/\d+/, "sequenceNumber looks like a number");
|
||||
is($record1->sequenceNumber, 1, "record 1 sequenceNumber is 1");
|
||||
like($record1->id, qr/[A-Za-z0-9_-]{22}/, "id looks like a guid");
|
||||
|
||||
# custom id
|
||||
my $record2 = WebGUI::Cruddy->new($session, {id=>'theshawshankredemption'});
|
||||
is($record2->get('id'),'theshawshankredemption',"custom id works");
|
||||
is($record2->id,'theshawshankredemption',"custom id works");
|
||||
$record2->delete;
|
||||
|
||||
# instanciation
|
||||
|
|
@ -92,39 +90,39 @@ my $copyOfRecord2 = WebGUI::Cruddy->new($session, $record2->getId);
|
|||
is($record2->getId, $copyOfRecord2->getId, "can reinstanciate record");
|
||||
|
||||
# sequencing
|
||||
is($record2->get('sequenceNumber'), 2, "record 1 sequenceNumber is 2");
|
||||
my $record3 = WebGUI::Cruddy->create($session);
|
||||
is($record3->get('sequenceNumber'), 3, "record 1 sequenceNumber is 3");
|
||||
my $record4 = WebGUI::Cruddy->create($session);
|
||||
is($record4->get('sequenceNumber'), 4, "record 1 sequenceNumber is 4");
|
||||
is($record2->sequenceNumber, 2, "record 1 sequenceNumber is 2");
|
||||
my $record3 = WebGUI::Cruddy->new($session);
|
||||
is($record3->sequenceNumber, 3, "record 1 sequenceNumber is 3");
|
||||
my $record4 = WebGUI::Cruddy->new($session);
|
||||
is($record4->sequenceNumber, 4, "record 1 sequenceNumber is 4");
|
||||
ok($record4->demote, "demotion reports success");
|
||||
is($record4->get('sequenceNumber'), 4, "can't demote further than end");
|
||||
is($record4->sequenceNumber, 4, "can't demote further than end");
|
||||
ok($record1->promote, "promotion reports success");
|
||||
is($record1->get('sequenceNumber'), 1, "can't promote further than beginning");
|
||||
is($record1->sequenceNumber, 1, "can't promote further than beginning");
|
||||
$record4->promote;
|
||||
is($record4->get('sequenceNumber'), 3, "promotion from end works");
|
||||
is($record4->sequenceNumber, 3, "promotion from end works");
|
||||
$record4->demote;
|
||||
is($record4->get('sequenceNumber'), 4, "demotion to end works");
|
||||
is($record4->sequenceNumber, 4, "demotion to end works");
|
||||
$record1->demote;
|
||||
is($record1->get('sequenceNumber'), 2, "demotion from beginning works");
|
||||
is($record1->sequenceNumber, 2, "demotion from beginning works");
|
||||
$record1->promote;
|
||||
is($record1->get('sequenceNumber'), 1, "promotion to beginning works");
|
||||
is($record1->sequenceNumber, 1, "promotion to beginning works");
|
||||
$record2->demote;
|
||||
is($record2->get('sequenceNumber'), 3, "demotion from middle works");
|
||||
is($record2->sequenceNumber, 3, "demotion from middle works");
|
||||
$record2->promote;
|
||||
is($record2->get('sequenceNumber'), 2, "promotion from middle works");
|
||||
is($record2->sequenceNumber, 2, "promotion from middle works");
|
||||
|
||||
# deleting
|
||||
ok($record2->delete, "deletion reports success");
|
||||
my $copyOfRecord3 = WebGUI::Cruddy->new($session, $record3->getId);
|
||||
my $copyOfRecord4 = WebGUI::Cruddy->new($session, $record4->getId);
|
||||
is($copyOfRecord3->get('sequenceNumber'), '2', "deletion of record 2 moved record 3 to sequence 2");
|
||||
is($copyOfRecord4->get('sequenceNumber'), '3', "deletion of record 2 moved record 4 to sequence 3");
|
||||
is($copyOfRecord3->sequenceNumber, '2', "deletion of record 2 moved record 3 to sequence 2");
|
||||
is($copyOfRecord4->sequenceNumber, '3', "deletion of record 2 moved record 4 to sequence 3");
|
||||
|
||||
# updating
|
||||
sleep 1;
|
||||
ok($copyOfRecord4->update, "update returns success");
|
||||
isnt($copyOfRecord4->get('lastUpdated'), $copyOfRecord4->get('dateCreated'), "updates work");
|
||||
isnt($copyOfRecord4->lastUpdated, $copyOfRecord4->get('dateCreated'), "updates work");
|
||||
|
||||
# retrieve data
|
||||
my ($sql, $params) = WebGUI::Cruddy->getAllSql($session);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue