1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-29 10:24:20 +01:00
fab-manager/test/integration/events/recurrence_test.rb
2023-03-22 10:58:22 +01:00

122 lines
5.3 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
module Events; end
class Events::RecurrenceTest < ActionDispatch::IntegrationTest
def setup
@admin = User.find_by(username: 'admin')
login_as(@admin, scope: :user)
end
test 'create a recurrent event' do
name = 'Make your skatebord'
post '/api/events',
params: {
event: {
title: name,
event_image_attributes: {
attachment: fixture_file_upload('event/Skateboard.jpg')
},
description: 'Come make you own skatebord from stratch...',
start_date: 1.week.from_now.utc,
end_date: 1.week.from_now.utc,
all_day: true,
amount: 20,
event_theme_ids: [1],
category_id: 2,
age_range_id: 1,
recurrence: 'week',
recurrence_end_at: 10.weeks.from_now.utc,
event_files_attributes: [
{ attachment: fixture_file_upload('document.pdf', 'application/pdf', true) },
{ attachment: fixture_file_upload('document2.pdf', 'application/pdf', true) }
],
event_price_categories_attributes: [
{ price_category_id: 1, amount: 10 },
{ price_category_id: 2, amount: 15 }
],
advanced_accounting_attributes: {
code: '706300',
analytical_section: '9A54C'
}
}
},
headers: upload_headers
# Check response format & status
assert_equal 201, response.status, response.body
assert_match Mime[:json].to_s, response.content_type
# Check the events were correctly created
db_events = Event.where(title: name)
assert_equal 10, db_events.count
assert(db_events.all? { |event| !event.event_image.attachment.nil? })
assert(db_events.all? { |event| !event.description.empty? })
assert(db_events.all? { |event| event.availability.start_at.to_date >= 1.week.from_now.to_date })
assert(db_events.all? { |event| event.availability.start_at.to_date <= 10.weeks.from_now.end_of_day.to_date })
assert(db_events.all? { |event| event.availability.end_at.to_date >= 1.week.from_now.to_date })
assert(db_events.all? { |event| event.availability.end_at.to_date <= 10.weeks.from_now.end_of_day.to_date })
assert(db_events.all?(&:all_day?))
assert(db_events.all? { |event| event.amount == 2000 })
assert(db_events.all? { |event| event.event_theme_ids == [1] })
assert(db_events.all? { |event| event.category_id == 2 })
assert(db_events.all? { |event| event.age_range_id == 1 })
assert(db_events.all? { |event| event.event_files.count == 2 })
assert(db_events.all? { |event| !event.event_files[0].attachment.nil? })
assert(db_events.all? { |event| !event.event_files[1].attachment.nil? })
assert(db_events.all? { |event| event.event_price_categories[0].price_category_id == 1 })
assert(db_events.all? { |event| event.event_price_categories[0].amount == 1000 })
assert(db_events.all? { |event| event.event_price_categories[1].price_category_id == 2 })
assert(db_events.all? { |event| event.event_price_categories[1].amount == 1500 })
assert(db_events.all? { |event| event.advanced_accounting.code == '706300' })
assert(db_events.all? { |event| event.advanced_accounting.analytical_section == '9A54C' })
end
test 'create a simple recurrent event' do
name = 'Fablab party'
post '/api/events',
params: {
event: {
title: name,
event_image_attributes: {
attachment: fixture_file_upload('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_match Mime[:json].to_s, response.content_type
# Check the events were correctly created
db_events = Event.where(title: name)
assert_equal 4, db_events.count
assert(db_events.all? { |event| !event.event_image.attachment.nil? })
assert(db_events.all? { |event| !event.description.empty? })
assert(db_events.all? { |event| event.availability.start_at.to_date >= 2.weeks.from_now.to_date })
assert(db_events.all? { |event| event.availability.start_at.to_date <= 2.weeks.from_now.end_of_day.to_date + 3.months })
assert(db_events.all? { |event| event.availability.end_at.to_date >= 2.weeks.from_now.to_date })
assert(db_events.all? { |event| event.availability.end_at.to_date <= 2.weeks.from_now.end_of_day.to_date + 3.months })
assert(db_events.none?(&:all_day?))
assert(db_events.all? { |event| event.amount == 2000 })
assert(db_events.all? { |event| event.event_theme_ids.empty? })
assert(db_events.all? { |event| event.category_id == 2 })
assert(db_events.all? { |event| event.age_range_id.nil? })
assert(db_events.all? { |event| event.event_files.count.zero? })
assert(db_events.all? { |event| event.event_price_categories.count.zero? })
end
end