From 0645a14e0e4c0de8003308e4c58892a0d4098dd1 Mon Sep 17 00:00:00 2001 From: Kosuke Tanabe Date: Mon, 23 Dec 2024 22:15:03 +0900 Subject: [PATCH] =?UTF-8?q?2=E4=BB=B6=E7=9B=AE=E4=BB=A5=E4=B8=8A=E3=81=AE?= =?UTF-8?q?=E4=BA=88=E7=B4=84=E3=81=AE=E5=8F=96=E3=82=8A=E7=BD=AE=E3=81=8D?= =?UTF-8?q?=E3=81=8C=E8=A1=8C=E3=82=8F=E3=82=8C=E3=81=AA=E3=81=84=E3=81=AE?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3=20(#1925)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * get next reservation even if item is not present * bump version * fix next_reservation * install imagemagick * remove order from waiting scope * fix fixture file --- app/models/reserve.rb | 6 ++---- lib/enju_leaf/version.rb | 2 +- spec/fixtures/reserve_transitions.yml | 6 ++++++ spec/fixtures/reserves.yml | 13 +++++++++++-- spec/models/reserve_spec.rb | 6 +++++- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/models/reserve.rb b/app/models/reserve.rb index 25fff99dc9..ea9f2255ab 100644 --- a/app/models/reserve.rb +++ b/app/models/reserve.rb @@ -5,7 +5,7 @@ class Reserve < ApplicationRecord ] scope :hold, -> { where.not(item_id: nil) } scope :not_hold, -> { where(item_id: nil) } - scope :waiting, -> {not_in_state(:completed, :canceled, :expired).where('canceled_at IS NULL AND (expired_at > ? OR expired_at IS NULL)', Time.zone.now).order('reserves.id DESC')} + scope :waiting, -> {not_in_state(:completed, :canceled, :expired).where('canceled_at IS NULL AND (expired_at > ? OR expired_at IS NULL)', Time.zone.now)} scope :retained, -> {in_state(:retained).where.not(retained_at: nil)} scope :completed, -> {in_state(:completed).where.not(checked_out_at: nil)} scope :canceled, -> {in_state(:canceled).where.not(canceled_at: nil)} @@ -162,9 +162,7 @@ def check_expired_at end def next_reservation - if item - Reserve.waiting.where(manifestation_id: item.manifestation.id).readonly(false).first - end + Reserve.waiting.where.not(id: id).order(:created_at).find_by(manifestation_id: manifestation_id) end def send_message(sender = nil) diff --git a/lib/enju_leaf/version.rb b/lib/enju_leaf/version.rb index 81d3a01c70..5cd8334b17 100644 --- a/lib/enju_leaf/version.rb +++ b/lib/enju_leaf/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module EnjuLeaf - VERSION = "1.4.9".freeze + VERSION = "1.4.10".freeze end diff --git a/spec/fixtures/reserve_transitions.yml b/spec/fixtures/reserve_transitions.yml index 28091f37ee..1ee96d3907 100644 --- a/spec/fixtures/reserve_transitions.yml +++ b/spec/fixtures/reserve_transitions.yml @@ -88,6 +88,12 @@ reserve_transition_00015: reserve_id: 15 sort_key: 0 most_recent: true +reserve_transition_00016: + id: 16 + to_state: requested + reserve_id: 16 + sort_key: 0 + most_recent: true # == Schema Information # diff --git a/spec/fixtures/reserves.yml b/spec/fixtures/reserves.yml index 0817337403..35954f541c 100644 --- a/spec/fixtures/reserves.yml +++ b/spec/fixtures/reserves.yml @@ -112,7 +112,7 @@ reserve_00012: reserve_00013: updated_at: 2007-09-03 14:20:07.530854 +09:00 manifestation_id: 11 - user_id: 4 + user_id: 5 request_status_type_id: 3 id: 13 created_at: 2007-09-03 14:20:07.530854 +09:00 @@ -132,12 +132,21 @@ reserve_00014: reserve_00015: updated_at: 2007-09-03 14:20:09.530854 +09:00 manifestation_id: 11 - user_id: 4 + user_id: 6 request_status_type_id: 3 id: 15 created_at: 2007-09-03 14:20:09.530854 +09:00 expired_at: <%= 1.day.from_now.to_s(:db) %> lock_version: 0 +reserve_00016: + updated_at: 2007-09-03 14:20:10.530854 +09:00 + manifestation_id: 11 + user_id: 2 + request_status_type_id: 3 + id: 16 + created_at: 2007-09-03 14:20:10.530854 +09:00 + expired_at: <%= 1.day.from_now.to_s(:db) %> + lock_version: 0 # == Schema Information # diff --git a/spec/models/reserve_spec.rb b/spec/models/reserve_spec.rb index 68a44adb7b..4a550547c6 100644 --- a/spec/models/reserve_spec.rb +++ b/spec/models/reserve_spec.rb @@ -4,7 +4,11 @@ fixtures :all it "should have next reservation" do - reserves(:reserve_00014).next_reservation.should be_truthy + expect(reserves(:reserve_00014).state_machine.current_state).to eq "retained" + expect(reserves(:reserve_00014).next_reservation).to eq reserves(:reserve_00015) + reserves(:reserve_00014).transition_to!(:canceled) + expect(reserves(:reserve_00015).state_machine.current_state).to eq "retained" + expect(reserves(:reserve_00015).next_reservation).to eq reserves(:reserve_00016) end it "should notify a next reservation" do