mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-03-21 12:29:03 +01:00
(test) update recurrent events
This commit is contained in:
parent
50c239de0a
commit
4185b6e2fd
127
test/integration/events/recurrence_update_test.rb
Normal file
127
test/integration/events/recurrence_update_test.rb
Normal file
@ -0,0 +1,127 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'test_helper'
|
||||
|
||||
module Events; end
|
||||
|
||||
class Events::RecurrenceUpdateTest < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
@admin = User.find_by(username: 'admin')
|
||||
login_as(@admin, scope: :user)
|
||||
end
|
||||
|
||||
test 'update a recurrent event' do
|
||||
# first create a recurrent event
|
||||
name = 'Fablab party'
|
||||
post '/api/events',
|
||||
params: {
|
||||
event: {
|
||||
title: name,
|
||||
event_image_attributes: {
|
||||
attachment: fixture_file_upload('/files/event/Party.jpg')
|
||||
},
|
||||
description: 'Come party tonight at the fablab...',
|
||||
start_date: 2.weeks.from_now,
|
||||
end_date: 2.weeks.from_now,
|
||||
all_day: false,
|
||||
start_time: '18:00',
|
||||
end_time: '23:29',
|
||||
amount: 20,
|
||||
category_id: 2,
|
||||
recurrence: 'month',
|
||||
recurrence_end_at: 2.weeks.from_now + 3.months
|
||||
}
|
||||
},
|
||||
headers: upload_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_equal 201, response.status, response.body
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the events were correctly created
|
||||
db_events = Event.where(title: name)
|
||||
assert_equal 4, db_events.count
|
||||
|
||||
# Update all the events
|
||||
event = db_events.first
|
||||
new_title = 'Skateboard party'
|
||||
new_descr = 'Come make a skateboard tonight at the Fablab'
|
||||
new_image = '/files/event/Skateboard.jpg'
|
||||
put "/api/events/#{event&.id}", params: {
|
||||
event: {
|
||||
title: new_title,
|
||||
event_image_attributes: {
|
||||
attachment: fixture_file_upload(new_image)
|
||||
},
|
||||
description: new_descr,
|
||||
category_id: 1,
|
||||
event_theme_ids: [1],
|
||||
age_range_id: 1,
|
||||
start_date: event&.availability&.start_at,
|
||||
end_date: event&.availability&.end_at,
|
||||
all_day: false,
|
||||
start_time: '18:00',
|
||||
end_time: '23:29',
|
||||
amount: 20
|
||||
},
|
||||
edit_mode: 'all'
|
||||
}, headers: upload_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_response :success, response.body
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the events were correctly updated
|
||||
res = json_response(response.body)
|
||||
assert_equal 'update', res[:action]
|
||||
assert_equal 4, res[:total]
|
||||
assert_equal 4, res[:updated]
|
||||
res[:details][:events].each do |res_event|
|
||||
assert res_event[:status]
|
||||
db_event = Event.find(res_event[:event][:id])
|
||||
assert_equal new_title, db_event.title
|
||||
assert_equal new_descr, db_event.description
|
||||
assert_equal 1, db_event.category_id
|
||||
assert_includes db_event.event_theme_ids, 1
|
||||
assert_equal 1, db_event.age_range_id
|
||||
assert FileUtils.compare_file(
|
||||
File.join(ActionDispatch::IntegrationTest.fixture_path, new_image),
|
||||
db_event.event_image.attachment.file.path
|
||||
)
|
||||
end
|
||||
|
||||
# Update again but only the next events
|
||||
event = Event.includes(:availability).where(title: new_title).order('availabilities.start_at').limit(2)[1]
|
||||
put "/api/events/#{event&.id}", params: {
|
||||
event: {
|
||||
title: event.title,
|
||||
description: event.description,
|
||||
category_id: 2,
|
||||
event_theme_ids: [1],
|
||||
age_range_id: 1,
|
||||
start_date: event.availability.start_at,
|
||||
end_date: event.availability.end_at,
|
||||
all_day: false,
|
||||
start_time: '18:00',
|
||||
end_time: '23:29',
|
||||
amount: 20
|
||||
},
|
||||
edit_mode: 'next'
|
||||
}.to_json, headers: default_headers
|
||||
|
||||
# Check response format & status
|
||||
assert_response :success, response.body
|
||||
assert_equal Mime[:json], response.content_type
|
||||
|
||||
# Check the events were correctly updated
|
||||
res = json_response(response.body)
|
||||
assert_equal 'update', res[:action]
|
||||
assert_equal 3, res[:total]
|
||||
assert_equal 3, res[:updated]
|
||||
res[:details][:events].each do |res_event|
|
||||
assert res_event[:status]
|
||||
db_event = Event.find(res_event[:event][:id])
|
||||
assert_equal 2, db_event.category_id
|
||||
end
|
||||
end
|
||||
end
|
@ -12,6 +12,7 @@ require 'sidekiq/testing'
|
||||
require 'minitest/reporters'
|
||||
require 'helpers/invoice_helper'
|
||||
require 'helpers/archive_helper'
|
||||
require 'fileutils'
|
||||
|
||||
VCR.configure do |config|
|
||||
config.cassette_library_dir = 'test/vcr_cassettes'
|
||||
|
Loading…
x
Reference in New Issue
Block a user