1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/test/integration/open_api/availabilities_test.rb
2023-03-30 13:22:36 +02:00

88 lines
3.7 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
module OpenApi; end
class OpenApi::AvailabilitiesTest < ActionDispatch::IntegrationTest
def setup
@token = OpenAPI::Client.find_by(name: 'minitest').token
end
test 'list availabilities' do
get '/open_api/v1/availabilities', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].none? { |a| a[:id].blank? })
assert(availabilities[:availabilities].none? { |a| a[:start_at].blank? })
assert(availabilities[:availabilities].none? { |a| a[:end_at].blank? })
assert(availabilities[:availabilities].none? { |a| a[:available_type].blank? })
assert(availabilities[:availabilities].none? { |a| a[:available_ids].empty? })
assert(availabilities[:availabilities].none? { |a| a[:created_at].blank? })
assert(availabilities[:availabilities].none? { |a| a[:slots].empty? })
assert(availabilities[:availabilities].pluck(:slots).flatten.none? { |s| s[:id].blank? })
assert(availabilities[:availabilities].pluck(:slots).flatten.none? { |s| s[:start_at].blank? })
assert(availabilities[:availabilities].pluck(:slots).flatten.none? { |s| s[:end_at].blank? })
end
test 'list availabilities with pagination details' do
get '/open_api/v1/availabilities?page=1&per_page=5', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_equal 5, availabilities[:availabilities].count
end
test 'list availabilities for given IDs' do
get '/open_api/v1/availabilities?id=[3,4]', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].all? { |a| [3, 4].include?(a[:id]) })
end
test 'list availabilities for given type' do
get '/open_api/v1/availabilities?available_type=Machine', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].all? { |a| a[:available_type] == 'Machine' })
end
test 'list availabilities for given type and IDs' do
get '/open_api/v1/availabilities?available_type=Machine&available_id[]=1&available_id[]=2', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].all? { |a| a[:available_type] == 'Machine' })
assert(availabilities[:availabilities].all? { |a| a[:available_ids].any? { |id| [1, 2].include?(id) } })
end
test 'list availabilities with given available_id but no available_type does not filter by id' do
get '/open_api/v1/availabilities?&available_id=1', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].any? { |a| a[:available_ids] != 1 })
end
test 'list availabilities with date filtering' do
get '/open_api/v1/availabilities?after=2016-04-01T00:00:00+01:00&before=2016-05-31T23:59:59+02:00', headers: open_api_headers(@token)
assert_response :success
availabilities = json_response(response.body)
assert_not_empty availabilities[:availabilities]
assert(availabilities[:availabilities].all? do |a|
start = Time.zone.parse(a[:start_at])
ending = Time.zone.parse(a[:end_at])
start >= '2016-04-01'.to_date && ending <= '2016-05-31'.to_date
end)
end
end