From 1bb1f444e9f8b2e3f7e4408122726f09ec2f4330 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 31 Dec 2019 09:16:17 -0300 Subject: [PATCH] Bug 24321: Add Koha::Objects->attributes_from_api This patch makes the 'attributes_from_api' method from the singular class available from the result set class. To test: 1. Apply this patch 2. Run: $ kshell k$ prove t/db_dependent/Koha/Objects.t => SUCCESS: Tests pass! 4. Sign off :-D 5. Yeah, I skipped 3 :-P --- Koha/Objects.pm | 15 +++++++++++++++ t/db_dependent/Koha/Objects.t | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/Koha/Objects.pm b/Koha/Objects.pm index 31387e1442..165511a42a 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -320,6 +320,21 @@ sub to_api { return [ map { $_->to_api } $self->as_list ]; } +=head3 attributes_from_api + + my $attributes = $objects->attributes_from_api( $api_attributes ); + +Translates attributes from the API to DBIC + +=cut + +sub attributes_from_api { + my ( $self, $attributes ) = @_; + + $self->{_singular_object} ||= $self->object_class->new(); + return $self->{_singular_object}->attributes_from_api( $attributes ); +} + =head3 Koha::Objects->_wrap wraps the DBIC object in a corresponding Koha object diff --git a/t/db_dependent/Koha/Objects.t b/t/db_dependent/Koha/Objects.t index 43810fde02..a375b77d5b 100644 --- a/t/db_dependent/Koha/Objects.t +++ b/t/db_dependent/Koha/Objects.t @@ -672,3 +672,25 @@ subtest 'Return same values as DBIx::Class' => sub { }; }; + +subtest "attributes_from_api() tests" => sub { + + plan tests => 1; + + $schema->storage->txn_begin; + + my $cities_rs = Koha::Cities->new; + my $city = Koha::City->new; + + my $api_attributes = { + name => 'Cordoba', + postal_code => 5000 + }; + + is_deeply( + $cities_rs->attributes_from_api($api_attributes), + $city->attributes_from_api($api_attributes) + ); + + $schema->storage->txn_rollback; +}; -- 2.24.1