From b3574ecde4ed36b9ac3ec8d627fcd196e74f6908 Mon Sep 17 00:00:00 2001 From: Agustin Moyano Date: Fri, 15 May 2020 11:09:56 -0300 Subject: [PATCH] Bug 23019: Add tests Signed-off-by: Abbey Holt Signed-off-by: Nick Clemens --- t/db_dependent/ImportBatch.t | 4 + t/db_dependent/api/v1/import_batch_profiles.t | 178 ++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) create mode 100644 t/db_dependent/api/v1/import_batch_profiles.t diff --git a/t/db_dependent/ImportBatch.t b/t/db_dependent/ImportBatch.t index e4c3676692..863c903728 100755 --- a/t/db_dependent/ImportBatch.t +++ b/t/db_dependent/ImportBatch.t @@ -68,6 +68,8 @@ delete $importbatch2->{upload_timestamp}; delete $importbatch2->{import_batch_id}; delete $importbatch2->{num_records}; delete $importbatch2->{num_items}; +delete $importbatch2->{profile_id}; +delete $importbatch2->{profile}; is_deeply( $importbatch2, $sample_import_batch2, "GetImportBatch returns the right informations about $sample_import_batch2" ); @@ -77,6 +79,8 @@ delete $importbatch1->{upload_timestamp}; delete $importbatch1->{import_batch_id}; delete $importbatch1->{num_records}; delete $importbatch1->{num_items}; +delete $importbatch1->{profile_id}; +delete $importbatch1->{profile}; is_deeply( $importbatch1, $sample_import_batch1, "GetImportBatch returns the right informations about $sample_import_batch1" ); diff --git a/t/db_dependent/api/v1/import_batch_profiles.t b/t/db_dependent/api/v1/import_batch_profiles.t new file mode 100644 index 0000000000..cda2f2da47 --- /dev/null +++ b/t/db_dependent/api/v1/import_batch_profiles.t @@ -0,0 +1,178 @@ +#!/usr/bin/env perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use Test::More tests => 4; +use Test::Mojo; +use t::lib::TestBuilder; +use t::lib::Mocks; + +use Koha::Database; +use Koha::ImportBatchProfiles; + +my $schema = Koha::Database->new->schema; +my $builder = t::lib::TestBuilder->new(); + +t::lib::Mocks::mock_preference( 'RESTBasicAuth', 1 ); + +my $t = Test::Mojo->new('Koha::REST::V1'); + +subtest 'list profiles' => sub { + plan tests => 4; + + $schema->storage->txn_begin; + + Koha::ImportBatchProfiles->search()->delete; + + my $ibp1 = $builder->build_object({ class => 'Koha::ImportBatchProfiles', value => { name => 'a_ibp' } }); + my $ibp2 = $builder->build_object({ class => 'Koha::ImportBatchProfiles', value => { name => 'b_ibp' } }); + + my $patron = $builder->build_object( + { + class => 'Koha::Patrons', + value => { + flags => 1 + } + } + ); + + my $pwd = 'thePassword123'; + $patron->set_password( { password => $pwd, skip_validation => 1 } ); + + my $uid = $patron->userid; + + $t->get_ok("//$uid:$pwd@/api/v1/import_batch_profiles?_order_by=+name") + ->status_is(200) + ->json_is('/0/name', $ibp1->name) + ->json_is('/1/name', $ibp2->name); + + + $schema->storage->txn_rollback; + +}; + +subtest 'add profile' => sub { + plan tests => 5; + + $schema->storage->txn_begin; + + Koha::ImportBatchProfiles->search()->delete; + + my $patron = $builder->build_object( + { + class => 'Koha::Patrons', + value => { + flags => 1 + } + } + ); + + my $pwd = 'thePassword123'; + $patron->set_password( { password => $pwd, skip_validation => 1 } ); + + my $uid = $patron->userid; + my $post_data = { + name => 'profileName', + overlay_action => 'overlay_action' + }; + $t->post_ok("//$uid:$pwd@/api/v1/import_batch_profiles", json => $post_data) + ->status_is(201) + ->json_has('/profile_id') + ->json_is('/name', $post_data->{name}) + ->json_is('/overlay_action', $post_data->{overlay_action}); + + + $schema->storage->txn_rollback; + +}; + +subtest 'edit profile' => sub { + plan tests => 5; + + $schema->storage->txn_begin; + + Koha::ImportBatchProfiles->search()->delete; + + my $patron = $builder->build_object( + { + class => 'Koha::Patrons', + value => { + flags => 1 + } + } + ); + + my $pwd = 'thePassword123'; + $patron->set_password( { password => $pwd, skip_validation => 1 } ); + + my $uid = $patron->userid; + + my $ibp = $builder->build_object({class => 'Koha::ImportBatchProfiles', value => { name => 'someProfile' }}); + + my $post_data = { + name => 'theProfile' + }; + + $t->put_ok("//$uid:$pwd@/api/v1/import_batch_profiles/".$ibp->id, json => $post_data) + ->status_is(200) + ->json_is('/profile_id', $ibp->id) + ->json_is('/name', $post_data->{name}); + + $ibp->discard_changes; + + is($ibp->name, $post_data->{name}, 'profile name should be the updated one'); + + + $schema->storage->txn_rollback; + +}; + +subtest 'delete profile' => sub { + plan tests => 3; + + $schema->storage->txn_begin; + + Koha::ImportBatchProfiles->search()->delete; + + my $patron = $builder->build_object( + { + class => 'Koha::Patrons', + value => { + flags => 1 + } + } + ); + + my $pwd = 'thePassword123'; + $patron->set_password( { password => $pwd, skip_validation => 1 } ); + + my $uid = $patron->userid; + + my $ibp = $builder->build_object({class => 'Koha::ImportBatchProfiles'}); + + $t->delete_ok("//$uid:$pwd@/api/v1/import_batch_profiles/".$ibp->id) + ->status_is(204); + + my $search = Koha::ImportBatchProfiles->find($ibp->id); + + is($search, undef, 'profile should be erased'); + + + $schema->storage->txn_rollback; + +}; \ No newline at end of file -- 2.11.0