From 9ce2a59541ae4c2aed8b0bf201aa54a3d25ecf59 Mon Sep 17 00:00:00 2001 From: Kosuke Tanabe Date: Sun, 19 Jan 2025 18:00:18 +0900 Subject: [PATCH 1/4] fix checkout --- app/models/concerns/enju_circulation/enju_item.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/models/concerns/enju_circulation/enju_item.rb b/app/models/concerns/enju_circulation/enju_item.rb index fd2f60ab2..4fef90811 100644 --- a/app/models/concerns/enju_circulation/enju_item.rb +++ b/app/models/concerns/enju_circulation/enju_item.rb @@ -94,11 +94,10 @@ def available_for_checkout? def checkout!(user) Item.transaction do - if user_reservation(user) - unless user_reservation.state_machine.in_state?(:completed) - user_reservation.checked_out_at = Time.zone.now - user_reservation.state_machine.transition_to!(:completed) - end + reserve = user_reservation(user) + if reserve && reserve.state_machine.not_in_state?(:completed) + reserve.checked_out_at = Time.zone.now + reserve.state_machine.transition_to!(:completed) end update!(circulation_status: CirculationStatus.find_by(name: 'On Loan')) From 2d14b6ed02ec96918fc73219b917cb947ff6a1f2 Mon Sep 17 00:00:00 2001 From: Kosuke Tanabe Date: Sun, 19 Jan 2025 18:13:40 +0900 Subject: [PATCH 2/4] fix checking state --- app/models/concerns/enju_circulation/enju_item.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/concerns/enju_circulation/enju_item.rb b/app/models/concerns/enju_circulation/enju_item.rb index 4fef90811..7b4fdda4e 100644 --- a/app/models/concerns/enju_circulation/enju_item.rb +++ b/app/models/concerns/enju_circulation/enju_item.rb @@ -95,7 +95,7 @@ def available_for_checkout? def checkout!(user) Item.transaction do reserve = user_reservation(user) - if reserve && reserve.state_machine.not_in_state?(:completed) + if reserve && !reserve.state_machine.in_state?(:completed) reserve.checked_out_at = Time.zone.now reserve.state_machine.transition_to!(:completed) end From 6cc3efa32bf677e6dab933a24ecc003f40c24fda Mon Sep 17 00:00:00 2001 From: Kosuke Tanabe Date: Sun, 19 Jan 2025 18:29:05 +0900 Subject: [PATCH 3/4] fix spec file --- app/models/concerns/enju_circulation/enju_basket.rb | 5 +++-- spec/controllers/checked_items_controller_spec.rb | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/enju_circulation/enju_basket.rb b/app/models/concerns/enju_circulation/enju_basket.rb index 208ffcc74..ef1a3331a 100644 --- a/app/models/concerns/enju_circulation/enju_basket.rb +++ b/app/models/concerns/enju_circulation/enju_basket.rb @@ -14,7 +14,9 @@ def basket_checkout(librarian) Item.transaction do checked_items.each do |checked_item| - checkout = user.checkouts.new( + checked_item.item.reload + + checkout = user.checkouts.create!( librarian: librarian, item: checked_item.item, basket: self, @@ -22,7 +24,6 @@ def basket_checkout(librarian) shelf: checked_item.item.shelf, due_date: checked_item.due_date ) - checkout.save! checked_item.item.checkout!(user) end CheckedItem.where(basket_id: id).destroy_all diff --git a/spec/controllers/checked_items_controller_spec.rb b/spec/controllers/checked_items_controller_spec.rb index 5cf3baf51..a95ee16e7 100644 --- a/spec/controllers/checked_items_controller_spec.rb +++ b/spec/controllers/checked_items_controller_spec.rb @@ -232,7 +232,7 @@ it 'assigns a newly created checked_item as @checked_item' do old_count = items(:item_00021).manifestation.reserves.waiting.count post :create, params: { checked_item: { item_identifier: '00021' }, basket_id: 11 } - assigns(:checked_item).should be_valid + expect(assigns(:checked_item)).not_to be_valid assigns(:checked_item).item.manifestation.reserves.waiting.count.should eq old_count assigns(:checked_item).librarian.should eq users(:admin) end From 7dc7849b70f7c1e14009b00f16073c73c0471638 Mon Sep 17 00:00:00 2001 From: Kosuke Tanabe Date: Sun, 19 Jan 2025 19:13:47 +0900 Subject: [PATCH 4/4] update spec file --- spec/controllers/checked_items_controller_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/controllers/checked_items_controller_spec.rb b/spec/controllers/checked_items_controller_spec.rb index a95ee16e7..a740d09ca 100644 --- a/spec/controllers/checked_items_controller_spec.rb +++ b/spec/controllers/checked_items_controller_spec.rb @@ -232,7 +232,9 @@ it 'assigns a newly created checked_item as @checked_item' do old_count = items(:item_00021).manifestation.reserves.waiting.count post :create, params: { checked_item: { item_identifier: '00021' }, basket_id: 11 } + expect(items(:item_00021).user_reservation(Basket.find(11).user)).to be_truthy expect(assigns(:checked_item)).not_to be_valid + expect(assigns(:checked_item).errors[:base]).to include(I18n.t('activerecord.errors.messages.checked_item.reserved_item_included')) assigns(:checked_item).item.manifestation.reserves.waiting.count.should eq old_count assigns(:checked_item).librarian.should eq users(:admin) end