X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Finflate%2Fserialize.t;h=c2be971efea32c33ad9e70494dbebe7ca2db9f54;hb=497d874ac78f5b6bba1309001f62c299a9419499;hp=59c099753807729491c3d220b9ae7e5162c4f58c;hpb=c6e0ee83e0c8e607d62871633570fe1e94079e63;p=dbsrgits%2FDBIx-Class.git diff --git a/t/inflate/serialize.t b/t/inflate/serialize.t index 59c0997..c2be971 100644 --- a/t/inflate/serialize.t +++ b/t/inflate/serialize.t @@ -32,7 +32,7 @@ foreach my $serializer (@serializers) { plan (skip_all => "No suitable serializer found") unless $selected; -plan (tests => 8); +plan (tests => 11); DBICTest::Schema::Serialized->inflate_column( 'serialized', { inflate => $selected->{inflater}, deflate => $selected->{deflater}, @@ -84,3 +84,17 @@ is_deeply($object->serialized, $struct_hash, 'inflated hash matches original'); ok($object->update( { serialized => $struct_array } ), 'arrayref deflation'); ok($inflated = $object->serialized, 'arrayref inflation'); is_deeply($inflated, $struct_array, 'inflated array matches original'); + + +#===== make sure make_column_dirty ineracts reasonably with inflation +$object = $rs->first; +$object->update ({serialized => { x => 'y'}}); + +$object->serialized->{x} = 'z'; # change state without notifying $object +ok (!$object->get_dirty_columns, 'no dirty columns yet'); +is_deeply ($object->serialized, { x => 'z' }, 'object data correct'); + +$object->make_column_dirty('serialized'); +$object->update; + +is_deeply ($rs->first->serialized, { x => 'z' }, 'changes made it to the db' );