1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-21 15:54:22 +01:00

(bug) always show machine availability in calender if machine module is inactive

This commit is contained in:
Du Peng 2022-12-20 18:42:19 +01:00
parent f47440c85a
commit bcd76ee6d5
5 changed files with 59 additions and 14 deletions

View File

@ -11,9 +11,9 @@ class Availabilities::PublicAvailabilitiesService
level = in_same_day(window[:start], window[:end]) ? 'slot' : 'availability' level = in_same_day(window[:start], window[:end]) ? 'slot' : 'availability'
service = Availabilities::AvailabilitiesService.new(@current_user, level) service = Availabilities::AvailabilitiesService.new(@current_user, level)
machines_slots = service.machines(Machine.where(id: ids[:machines]), @current_user, window) machines_slots = Setting.get('machines_module') ? service.machines(Machine.where(id: ids[:machines]), @current_user, window) : []
spaces_slots = service.spaces(Space.where(id:ids[:spaces]), @current_user, window) spaces_slots = Setting.get('spaces_module') ? service.spaces(Space.where(id: ids[:spaces]), @current_user, window) : []
trainings_slots = service.trainings(Training.where(id: ids[:trainings]), @current_user, window) trainings_slots = Setting.get('trainings_module') ? service.trainings(Training.where(id: ids[:trainings]), @current_user, window) : []
events_slots = events ? service.events(Event.all, @current_user, window) : [] events_slots = events ? service.events(Event.all, @current_user, window) : []
[].concat(trainings_slots).concat(events_slots).concat(machines_slots).concat(spaces_slots) [].concat(trainings_slots).concat(events_slots).concat(machines_slots).concat(spaces_slots)

View File

@ -860,3 +860,12 @@ history_value_90:
updated_at: '2022-10-26 12:46:16.125400000 Z' updated_at: '2022-10-26 12:46:16.125400000 Z'
footprint: footprint:
invoicing_profile_id: 1 invoicing_profile_id: 1
history_value_91:
id: 91
setting_id: 90
value: 'true'
created_at: '2022-12-20 14:38:40.000421'
updated_at: '2022-12-20 14:38:40.000421'
footprint:
invoicing_profile_id: 1

View File

@ -526,3 +526,9 @@ setting_89:
name: accounting_Product_code name: accounting_Product_code
created_at: 2022-10-26 12:46:16.125400000 Z created_at: 2022-10-26 12:46:16.125400000 Z
updated_at: 2022-10-26 12:46:16.125400000 Z updated_at: 2022-10-26 12:46:16.125400000 Z
setting_90:
id: 90
name: machines_module
created_at: 2020-04-15 14:38:40.000421500 Z
updated_at: 2020-04-15 14:38:40.000421500 Z

View File

@ -55,7 +55,7 @@ module Availabilities
start_date = DateTime.current.utc.strftime('%Y-%m-%d') start_date = DateTime.current.utc.strftime('%Y-%m-%d')
end_date = 7.days.from_now.utc.strftime('%Y-%m-%d') end_date = 7.days.from_now.utc.strftime('%Y-%m-%d')
tz = Time.zone.tzinfo.name tz = Time.zone.tzinfo.name
get "/api/availabilities?start=#{start_date}&end=#{end_date}&timezone=#{tz}&_=1487169767960" get "/api/availabilities?start=#{start_date}&end=#{end_date}&timezone=#{tz}&_=1487169767960&#{all_machines}"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status
@ -66,7 +66,7 @@ module Availabilities
assert_not_empty availabilities, 'no availabilities were found' assert_not_empty availabilities, 'no availabilities were found'
assert_not_nil availabilities[0], 'first availability was unexpectedly nil' assert_not_nil availabilities[0], 'first availability was unexpectedly nil'
assert_not availabilities.map { |a| a[:available_type] }.include?('space'), 'unexpected space availability instead that it was disabled' assert_not availabilities.pluck(:available_type).include?('space'), 'unexpected space availability instead that it was disabled'
# re-enable spaces # re-enable spaces
Setting.set('spaces_module', true) Setting.set('spaces_module', true)
@ -77,7 +77,7 @@ module Availabilities
start_date = DateTime.current.utc.strftime('%Y-%m-%d') start_date = DateTime.current.utc.strftime('%Y-%m-%d')
end_date = 7.days.from_now.utc.strftime('%Y-%m-%d') end_date = 7.days.from_now.utc.strftime('%Y-%m-%d')
tz = Time.zone.tzinfo.name tz = Time.zone.tzinfo.name
get "/api/availabilities?start=#{start_date}&end=#{end_date}&timezone=#{tz}&_=1487169767960" get "/api/availabilities?start=#{start_date}&end=#{end_date}&timezone=#{tz}&_=1487169767960&#{all_spaces}"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status
@ -88,7 +88,7 @@ module Availabilities
assert_not_empty availabilities, 'no availabilities were found' assert_not_empty availabilities, 'no availabilities were found'
assert_not_nil availabilities[0], 'first availability was unexpectedly nil' assert_not_nil availabilities[0], 'first availability was unexpectedly nil'
assert availabilities.map { |a| a[:available_type] }.include?('space'), 'space availability not found instead that it was enabled' assert availabilities.pluck(:available_type).include?('space'), 'space availability not found instead that it was enabled'
end end
test 'create availabilities' do test 'create availabilities' do
@ -126,10 +126,10 @@ module Availabilities
assert_not_nil availability[:id], 'availability ID was unexpectedly nil' assert_not_nil availability[:id], 'availability ID was unexpectedly nil'
# Check the slots # Check the slots
assert_equal (availability[:start_at].to_datetime + availability[:slot_duration].minutes * 4).iso8601, assert_equal (availability[:start_at].to_datetime + (availability[:slot_duration].minutes * 4)).iso8601,
availability[:end_at], availability[:end_at],
'expected end_at = start_at + 4 slots of 90 minutes' 'expected end_at = start_at + 4 slots of 90 minutes'
assert_equal (slots_count + 4 * 3), Slot.count, 'expected (4*3) slots of 90 minutes were created' assert_equal (slots_count + (4 * 3)), Slot.count, 'expected (4*3) slots of 90 minutes were created'
assert_equal 90.minutes, Availability.find(availability[:id]).slots.first.duration assert_equal 90.minutes, Availability.find(availability[:id]).slots.first.duration
# Check the recurrence # Check the recurrence
@ -137,5 +137,19 @@ module Availabilities
availability[:end_date].to_datetime.utc.to_date, availability[:end_date].to_datetime.utc.to_date,
'expected end_date = start_at + 2 weeks' 'expected end_date = start_at + 2 weeks'
end end
private
def all_machines
Machine.all.map { |m| "m%5B%5D=#{m.id}" }.join('&')
end
def all_trainings
Training.all.map { |m| "t%5B%5D=#{m.id}" }.join('&')
end
def all_spaces
Space.all.map { |m| "s%5B%5D=#{m.id}" }.join('&')
end
end end
end end

View File

@ -3,11 +3,11 @@
require 'test_helper' require 'test_helper'
class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
test 'get public machines availabilities' do test 'get public machines availabilities if machines module is active' do
start_date = DateTime.current.to_date start_date = DateTime.current.to_date
end_date = (DateTime.current + 7.days).to_date end_date = (DateTime.current + 7.days).to_date
get "/api/availabilities/public?start=#{start_date.to_s}&end=#{end_date.to_s}&timezone=Europe%2FParis&#{all_machines}" get "/api/availabilities/public?start=#{start_date}&end=#{end_date}&timezone=Europe%2FParis&#{all_machines}"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status
@ -24,11 +24,27 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
end end
end end
test 'get anymore machines availabilities if machines module is inactive' do
Setting.set('machines_module', false)
start_date = DateTime.current.to_date
end_date = (DateTime.current + 7.days).to_date
get "/api/availabilities/public?start=#{start_date}&end=#{end_date}&timezone=Europe%2FParis&#{all_machines}"
# Check response format & status
assert_equal 200, response.status
assert_equal Mime[:json], response.content_type
# Check the correct availabilities was returned
availabilities = json_response(response.body)
assert_empty availabilities
end
test 'get public trainings availabilities' do test 'get public trainings availabilities' do
start_date = DateTime.current.to_date start_date = DateTime.current.to_date
end_date = (DateTime.current + 7.days).to_date end_date = (DateTime.current + 7.days).to_date
get "/api/availabilities/public?start=#{start_date.to_s}&end=#{end_date.to_s}&timezone=Europe%2FParis&#{all_trainings}" get "/api/availabilities/public?start=#{start_date}&end=#{end_date}&timezone=Europe%2FParis&#{all_trainings}"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status
@ -49,7 +65,7 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
start_date = DateTime.current.to_date start_date = DateTime.current.to_date
end_date = (DateTime.current + 7.days).to_date end_date = (DateTime.current + 7.days).to_date
get "/api/availabilities/public?start=#{start_date.to_s}&end=#{end_date.to_s}&timezone=Europe%2FParis&#{all_spaces}" get "/api/availabilities/public?start=#{start_date}&end=#{end_date}&timezone=Europe%2FParis&#{all_spaces}"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status
@ -70,7 +86,7 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
start_date = 8.days.from_now.to_date start_date = 8.days.from_now.to_date
end_date = 16.days.from_now.to_date end_date = 16.days.from_now.to_date
get "/api/availabilities/public?start=#{start_date.to_s}&end=#{end_date.to_s}&timezone=Europe%2FParis&evt=true" get "/api/availabilities/public?start=#{start_date}&end=#{end_date}&timezone=Europe%2FParis&evt=true"
# Check response format & status # Check response format & status
assert_equal 200, response.status assert_equal 200, response.status