mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-01 12:24:28 +01:00
77 lines
2.8 KiB
Ruby
77 lines
2.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'test_helper'
|
|
|
|
class PrepaidPackServiceTest < ActiveSupport::TestCase
|
|
setup do
|
|
@acamus = User.find_by(username: 'acamus')
|
|
@machine = Machine.first
|
|
end
|
|
|
|
test 'get user packs' do
|
|
packs = PrepaidPackService.user_packs(@acamus, @machine)
|
|
p = StatisticProfilePrepaidPack.where(statistic_profile_id: @acamus.statistic_profile.id)
|
|
assert_not_empty packs
|
|
assert_equal packs.length, 1
|
|
assert_equal p.length, 2
|
|
assert_equal packs.first.id, p.last.id
|
|
end
|
|
|
|
test 'total number of prepaid minutes available' do
|
|
minutes_available = PrepaidPackService.minutes_available(@acamus, @machine)
|
|
assert_equal minutes_available, 600
|
|
end
|
|
|
|
test 'update user pack minutes' do
|
|
availabilities_service = Availabilities::AvailabilitiesService.new(@acamus)
|
|
|
|
slots = availabilities_service.machines([@machine], @acamus, { start: Time.current, end: 1.day.from_now })
|
|
reservation = Reservation.create(
|
|
reservable_id: @machine.id,
|
|
reservable_type: Machine.name,
|
|
slots: [slots[0], slots[1]],
|
|
statistic_profile_id: @acamus.statistic_profile.id
|
|
)
|
|
|
|
PrepaidPackService.update_user_minutes(@acamus, reservation)
|
|
minutes_available = PrepaidPackService.minutes_available(@acamus, @machine)
|
|
assert_equal minutes_available, 480
|
|
end
|
|
|
|
test 'member has multiple active packs' do
|
|
availabilities_service = Availabilities::AvailabilitiesService.new(@acamus)
|
|
|
|
# user with current pack reserve 8 slots (on 10 available in the pack)
|
|
slots = availabilities_service.machines([@machine], @acamus, { start: Time.current, end: 10.days.from_now })
|
|
reservation = Reservation.create(
|
|
reservable_id: @machine.id,
|
|
reservable_type: Machine.name,
|
|
slots: [slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7]],
|
|
statistic_profile_id: @acamus.statistic_profile.id
|
|
)
|
|
|
|
PrepaidPackService.update_user_minutes(@acamus, reservation)
|
|
minutes_available = PrepaidPackService.minutes_available(@acamus, @machine)
|
|
assert_equal 120, minutes_available
|
|
|
|
# user buy a new pack
|
|
prepaid_pack = PrepaidPack.first
|
|
StatisticProfilePrepaidPack.create!(prepaid_pack: prepaid_pack, statistic_profile: @acamus.statistic_profile)
|
|
|
|
minutes_available = PrepaidPackService.minutes_available(@acamus, @machine)
|
|
assert_equal 720, minutes_available
|
|
|
|
# user books a new reservation of 4 slots
|
|
reservation = Reservation.create(
|
|
reservable_id: @machine.id,
|
|
reservable_type: Machine.name,
|
|
slots: [slots[8], slots[9], slots[10], slots[11]],
|
|
statistic_profile_id: @acamus.statistic_profile.id
|
|
)
|
|
|
|
PrepaidPackService.update_user_minutes(@acamus, reservation)
|
|
minutes_available = PrepaidPackService.minutes_available(@acamus, @machine)
|
|
assert_equal 480, minutes_available
|
|
end
|
|
end
|