1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-20 14:54:15 +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'
service = Availabilities::AvailabilitiesService.new(@current_user, level)
machines_slots = service.machines(Machine.where(id: ids[:machines]), @current_user, window)
spaces_slots = service.spaces(Space.where(id:ids[:spaces]), @current_user, window)
trainings_slots = service.trainings(Training.where(id: ids[:trainings]), @current_user, window)
machines_slots = Setting.get('machines_module') ? service.machines(Machine.where(id: ids[:machines]), @current_user, window) : []
spaces_slots = Setting.get('spaces_module') ? service.spaces(Space.where(id: ids[:spaces]), @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) : []
[].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'
footprint:
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
created_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')
end_date = 7.days.from_now.utc.strftime('%Y-%m-%d')
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
assert_equal 200, response.status
@ -66,7 +66,7 @@ module Availabilities
assert_not_empty availabilities, 'no availabilities were found'
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
Setting.set('spaces_module', true)
@ -77,7 +77,7 @@ module Availabilities
start_date = DateTime.current.utc.strftime('%Y-%m-%d')
end_date = 7.days.from_now.utc.strftime('%Y-%m-%d')
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
assert_equal 200, response.status
@ -88,7 +88,7 @@ module Availabilities
assert_not_empty availabilities, 'no availabilities were found'
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
test 'create availabilities' do
@ -126,10 +126,10 @@ module Availabilities
assert_not_nil availability[:id], 'availability ID was unexpectedly nil'
# 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],
'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
# Check the recurrence
@ -137,5 +137,19 @@ module Availabilities
availability[:end_date].to_datetime.utc.to_date,
'expected end_date = start_at + 2 weeks'
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

View File

@ -3,11 +3,11 @@
require 'test_helper'
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
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
assert_equal 200, response.status
@ -24,11 +24,27 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
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
start_date = DateTime.current.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
assert_equal 200, response.status
@ -49,7 +65,7 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
start_date = DateTime.current.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
assert_equal 200, response.status
@ -70,7 +86,7 @@ class Availabilities::AsPublicTest < ActionDispatch::IntegrationTest
start_date = 8.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
assert_equal 200, response.status