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 f6a3ecd4e9..513d2ffcb9 100644 --- a/t/db_dependent/Koha/Objects.t +++ b/t/db_dependent/Koha/Objects.t @@ -675,3 +675,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; +};