diff --git a/app/models/price.rb b/app/models/price.rb index 03cf6773b..023c981d6 100644 --- a/app/models/price.rb +++ b/app/models/price.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true -MINUTES_PER_HOUR = 60 -SECONDS_PER_MINUTE = 60 +MINUTES_PER_HOUR = 60.0 +SECONDS_PER_MINUTE = 60.0 # Store customized price for various items (Machine, Space), depending on the group and on the plan # Also provides a static helper method to compute the price details of a shopping cart @@ -51,9 +51,9 @@ class Price < ApplicationRecord when Machine base_amount = reservable.prices.find_by(group_id: user.group_id, plan_id: plan.try(:id)).amount if plan - space_credit = plan.machine_credits.select { |credit| credit.creditable_id == reservable.id }.first - if space_credit - hours_available = credits_hours(space_credit, user, new_plan_being_bought) + machine_credit = plan.machine_credits.select { |credit| credit.creditable_id == reservable.id }.first + if machine_credit + hours_available = credits_hours(machine_credit, user, new_plan_being_bought) slots.each_with_index do |slot, index| total_amount += get_slot_price(base_amount, slot, admin, elements: all_elements, has_credits: (index < hours_available)) end diff --git a/test/integration/reservations/create_as_admin_test.rb b/test/integration/reservations/create_as_admin_test.rb index 164cb06b9..92dd752fc 100644 --- a/test/integration/reservations/create_as_admin_test.rb +++ b/test/integration/reservations/create_as_admin_test.rb @@ -57,7 +57,7 @@ module Reservations # invoice_items assertions invoice_item = InvoiceItem.last - assert_equal invoice_item.amount, machine.prices.find_by(group_id: @user_without_subscription.group_id, plan_id: nil).amount + assert_equal machine.prices.find_by(group_id: @user_without_subscription.group_id, plan_id: nil).amount, invoice_item.amount # invoice assertions invoice = Invoice.find_by(invoiced: reservation) @@ -244,7 +244,7 @@ module Reservations # invoice_items assertions invoice_item = InvoiceItem.last - assert_equal invoice_item.amount, machine.prices.find_by(group_id: @vlonchamp.group_id, plan_id: nil).amount + assert_equal machine.prices.find_by(group_id: @vlonchamp.group_id, plan_id: nil).amount, invoice_item.amount # invoice assertions invoice = Invoice.find_by(invoiced: reservation) diff --git a/test/integration/reservations/create_test.rb b/test/integration/reservations/create_test.rb index e9d17c1a3..cc1aaf26d 100644 --- a/test/integration/reservations/create_test.rb +++ b/test/integration/reservations/create_test.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'test_helper' + module Reservations class CreateTest < ActionDispatch::IntegrationTest setup do @@ -67,7 +69,7 @@ module Reservations # invoice_items assertions invoice_item = InvoiceItem.last - assert_equal invoice_item.amount, machine.prices.find_by(group_id: @user_without_subscription.group_id, plan_id: nil).amount + assert_equal machine.prices.find_by(group_id: @user_without_subscription.group_id, plan_id: nil).amount, invoice_item.amount assert invoice_item.check_footprint # invoice assertions @@ -413,7 +415,7 @@ module Reservations # invoice_items assertions invoice_item = InvoiceItem.last - assert_equal invoice_item.amount, machine.prices.find_by(group_id: @vlonchamp.group_id, plan_id: nil).amount + assert_equal machine.prices.find_by(group_id: @vlonchamp.group_id, plan_id: nil).amount, invoice_item.amount assert invoice_item.check_footprint # invoice assertions diff --git a/test/models/availability_test.rb b/test/models/availability_test.rb index b14e1c70b..3d2b07c65 100644 --- a/test/models/availability_test.rb +++ b/test/models/availability_test.rb @@ -1,11 +1,12 @@ +# frozen_string_literal: true + require 'test_helper' class AvailabilityTest < ActiveSupport::TestCase - test "length must be at least 1h" do + test 'any duration is allowed' do a = Availability.first a.end_at = a.start_at + 15.minutes - assert a.invalid? - assert a.errors.key?(:end_at) + assert a.valid? end test "if type available_type is 'machines' check that there is minimum 1 association" do