1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-01 12:24:28 +01:00
fab-manager/test/integration/reservation_contexts_test.rb
Nicolas Florentin 043ff6d47e wip
2023-07-20 16:55:22 +02:00

89 lines
2.9 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
class ReservationContextsTest < ActionDispatch::IntegrationTest
def setup
@admin = User.find_by(username: 'admin')
login_as(@admin, scope: :user)
end
test 'create a reservation_context' do
applicable_on = ["machine", "space", "training"]
post '/api/reservation_contexts',
params: {
name: 'Enseignant',
applicable_on: applicable_on
}.to_json,
headers: default_headers
# Check response format & reservation_context
assert_equal 201, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the correct reservation_context was created
res = json_response(response.body)
reservation_context = ReservationContext.where(id: res[:id]).first
assert_not_nil reservation_context, 'reservation_context was not created in database'
assert_equal 'Enseignant', res[:name]
assert_equal applicable_on, res[:applicable_on]
end
test 'update a reservation_context' do
applicable_on = ["machine"]
patch '/api/reservation_contexts/1',
params: {
name: 'Nouveau nom',
applicable_on: applicable_on
}.to_json,
headers: default_headers
# Check response format & reservation_context
assert_equal 200, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the reservation_context was updated
res = json_response(response.body)
assert_equal 1, res[:id]
assert_equal 'Nouveau nom', res[:name]
assert_equal applicable_on, res[:applicable_on]
end
test 'list all reservation_contexts' do
logout @admin
get '/api/reservation_contexts'
# Check response format & reservation_context
assert_equal 200, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the list items are ok
reservation_contexts = json_response(response.body)
assert_equal ReservationContext.count, reservation_contexts.count
assert_equal reservation_contexts(:reservation_context_1).name, reservation_contexts[0][:name]
end
test "list all applicable_on possible values" do
get '/api/reservation_contexts/applicable_on_values'
# Check response format & reservation_context
assert_equal 200, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the list items are ok
applicable_on_values = json_response(response.body)
assert_equal %w[machine space training], applicable_on_values
end
test 'delete a reservation_context' do
reservation_context = ReservationContext.create!(name: 'Gone too soon')
delete "/api/reservation_contexts/#{reservation_context.id}"
assert_response :success
assert_empty response.body
assert_raise ActiveRecord::RecordNotFound do
reservation_context.reload
end
end
end