Bugzilla – Attachment 126128 Details for
Bug 29157
Cannot set date/date-time attributes to NULL
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 29157: Regression tests
Bug-29157-Regression-tests.patch (text/plain), 6.77 KB, created by
Tomás Cohen Arazi (tcohen)
on 2021-10-12 20:43:35 UTC
(
hide
)
Description:
Bug 29157: Regression tests
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2021-10-12 20:43:35 UTC
Size:
6.77 KB
patch
obsolete
>From 06f853f74a242745ee8472690a2a8a293a31ee47 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Thu, 7 Oct 2021 15:16:01 -0300 >Subject: [PATCH] Bug 29157: Regression tests > >This patch implements regression tests for the filed bug. > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >Signed-off-by: David Nind <david@davidnind.com> >--- > t/db_dependent/Koha/Object.t | 152 ++++++++++++++++++-------------- > t/db_dependent/api/v1/patrons.t | 6 ++ > 2 files changed, 94 insertions(+), 64 deletions(-) > >diff --git a/t/db_dependent/Koha/Object.t b/t/db_dependent/Koha/Object.t >index c3de0be3de..8004c26446 100755 >--- a/t/db_dependent/Koha/Object.t >+++ b/t/db_dependent/Koha/Object.t >@@ -520,81 +520,105 @@ subtest 'new_from_api() tests' => sub { > > subtest 'attributes_from_api() tests' => sub { > >- plan tests => 12; >+ plan tests => 2; > >- my $patron = Koha::Patron->new(); >+ subtest 'date and date-time handling tests' => sub { > >- my $attrs = $patron->attributes_from_api( >- { >- updated_on => '2019-12-27T14:53:00', >- } >- ); >+ plan tests => 12; > >- ok( exists $attrs->{updated_on}, >- 'No translation takes place if no mapping' ); >- is( >- ref( $attrs->{updated_on} ), >- 'DateTime', >- 'Given a string, a timestamp field is converted into a DateTime object' >- ); >+ my $patron = Koha::Patron->new(); > >- $attrs = $patron->attributes_from_api( >- { >- last_seen => '2019-12-27T14:53:00' >- } >- ); >+ my $attrs = $patron->attributes_from_api( >+ { >+ updated_on => '2019-12-27T14:53:00', >+ last_seen => '2019-12-27T14:53:00', >+ date_of_birth => '2019-12-27', >+ } >+ ); > >- ok( exists $attrs->{lastseen}, >- 'Translation takes place because of the defined mapping' ); >- is( >- ref( $attrs->{lastseen} ), >- 'DateTime', >- 'Given a string, a datetime field is converted into a DateTime object' >- ); >+ ok( exists $attrs->{updated_on}, >+ 'No translation takes place if no mapping' ); >+ is( >+ ref( $attrs->{updated_on} ), >+ 'DateTime', >+ 'Given a string, a timestamp field is converted into a DateTime object' >+ ); > >- $attrs = $patron->attributes_from_api( >- { >- date_of_birth => '2019-12-27' >- } >- ); >+ ok( exists $attrs->{lastseen}, >+ 'Translation takes place because of the defined mapping' ); >+ is( >+ ref( $attrs->{lastseen} ), >+ 'DateTime', >+ 'Given a string, a datetime field is converted into a DateTime object' >+ ); > >- ok( exists $attrs->{dateofbirth}, >- 'Translation takes place because of the defined mapping' ); >- is( >- ref( $attrs->{dateofbirth} ), >- 'DateTime', >- 'Given a string, a date field is converted into a DateTime object' >- ); >+ ok( exists $attrs->{dateofbirth}, >+ 'Translation takes place because of the defined mapping' ); >+ is( >+ ref( $attrs->{dateofbirth} ), >+ 'DateTime', >+ 'Given a string, a date field is converted into a DateTime object' >+ ); > >- throws_ok >- { >- $attrs = $patron->attributes_from_api( >- { >- date_of_birth => '20141205', >- } >- ); >- } >- 'Koha::Exceptions::BadParameter', >- 'Bad date throws an exception'; >+ $attrs = $patron->attributes_from_api( >+ { >+ last_seen => undef, >+ date_of_birth => undef, >+ } >+ ); > >- is( >- $@->parameter, >- 'date_of_birth', >- 'Exception parameter is the API field name, not the DB one' >- ); >+ ok( exists $attrs->{lastseen}, >+ 'undef parameter is not skipped (Bug 29157)' ); >+ is( >+ $attrs->{lastseen}, >+ undef, >+ 'Given undef, a datetime field is set to undef (Bug 29157)' >+ ); > >- # Booleans >- $attrs = $patron->attributes_from_api( >- { >- incorrect_address => Mojo::JSON->true, >- patron_card_lost => Mojo::JSON->false, >- } >- ); >+ ok( exists $attrs->{dateofbirth}, >+ 'undef parameter is not skipped (Bug 29157)' ); >+ is( >+ $attrs->{dateofbirth}, >+ undef, >+ 'Given undef, a date field is set to undef (Bug 29157)' >+ ); >+ >+ throws_ok >+ { >+ $attrs = $patron->attributes_from_api( >+ { >+ date_of_birth => '20141205', >+ } >+ ); >+ } >+ 'Koha::Exceptions::BadParameter', >+ 'Bad date throws an exception'; >+ >+ is( >+ $@->parameter, >+ 'date_of_birth', >+ 'Exception parameter is the API field name, not the DB one' >+ ); >+ }; >+ >+ subtest 'booleans handling tests' => sub { > >- ok( exists $attrs->{gonenoaddress}, 'Attribute gets translated' ); >- is( $attrs->{gonenoaddress}, 1, 'Boolean correctly translated to integer (true => 1)' ); >- ok( exists $attrs->{lost}, 'Attribute gets translated' ); >- is( $attrs->{lost}, 0, 'Boolean correctly translated to integer (false => 0)' ); >+ plan tests => 4; >+ >+ my $patron = Koha::Patron->new; >+ >+ my $attrs = $patron->attributes_from_api( >+ { >+ incorrect_address => Mojo::JSON->true, >+ patron_card_lost => Mojo::JSON->false, >+ } >+ ); >+ >+ ok( exists $attrs->{gonenoaddress}, 'Attribute gets translated' ); >+ is( $attrs->{gonenoaddress}, 1, 'Boolean correctly translated to integer (true => 1)' ); >+ ok( exists $attrs->{lost}, 'Attribute gets translated' ); >+ is( $attrs->{lost}, 0, 'Boolean correctly translated to integer (false => 0)' ); >+ }; > }; > > subtest "Test update method" => sub { >diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t >index dbe6c1bbc5..6f38a92b59 100755 >--- a/t/db_dependent/api/v1/patrons.t >+++ b/t/db_dependent/api/v1/patrons.t >@@ -475,6 +475,12 @@ subtest 'update() tests' => sub { > $newpatron->{ userid } = "user" . $patron_1->id.$patron_2->id; > $newpatron->{ surname } = "user" . $patron_1->id.$patron_2->id; > >+ ## Trying to set to null on specially handled cases >+ # Special case: a date >+ $newpatron->{ date_of_birth } = undef; >+ # Special case: a date-time >+ $newpatron->{ last_seen } = undef; >+ > my $result = $t->put_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->borrowernumber => json => $newpatron ) > ->status_is(200, 'Patron updated successfully'); > >-- >2.33.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 29157
:
125644
|
125909
|
125910
|
125994
|
125995
|
126128
|
126129
|
126220
|
126221
|
126237
|
126238