mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-20 14:54:15 +01:00
(api) events: category,themes,age_range,url
This commit is contained in:
parent
00583a25ff
commit
5e186ebf14
@ -1,5 +1,6 @@
|
||||
# Changelog Fab-manager
|
||||
|
||||
- Extended OpenAPI endpoint to list events
|
||||
- Fix a bug: members can't change/cancel their reservations
|
||||
- Fix a bug: admin events view should default to the list tab
|
||||
- Fix a bug: event creation form should not allow setting multiple times the same price category
|
||||
|
@ -29,12 +29,21 @@ class OpenAPI::V1::EventsDoc < OpenAPI::V1::BaseDoc
|
||||
"created_at": "2016-04-25T10:49:40.055+02:00",
|
||||
"nb_total_places": 18,
|
||||
"nb_free_places": 16,
|
||||
"start_at": "2016-05-02T18:00:00.000+02:00",
|
||||
"end_at": "2016-05-02T22:00:00.000+02:00",
|
||||
"category": "Openlab",
|
||||
"event_image": {
|
||||
"large_url": "https://example.com/uploads/event_image/3454/large_event_image.jpg",
|
||||
"medium_url": "https://example.com/uploads/event_image/3454/medium_event_image.jpg",
|
||||
"small_url": "https://example.com/uploads/event_image/3454/small_event_image.jpg"
|
||||
},
|
||||
"prices": {
|
||||
"normal": {
|
||||
"name": "Plein tarif",
|
||||
"amount": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"url": "https://example.com/#!/events/183"
|
||||
},
|
||||
{
|
||||
"id": 182,
|
||||
@ -44,6 +53,19 @@ class OpenAPI::V1::EventsDoc < OpenAPI::V1::BaseDoc
|
||||
"created_at": "2016-04-11T17:40:15.146+02:00",
|
||||
"nb_total_places": 8,
|
||||
"nb_free_places": 0,
|
||||
"start_at": "2016-05-02T18:00:00.000+01:00",
|
||||
"end_at": "2026-05-02T22:00:00.000+01:00",
|
||||
"category": "Atelier",
|
||||
"themes": [
|
||||
"DIY",
|
||||
"Sport"
|
||||
],
|
||||
"age_range": "14 - 18 ans",
|
||||
"event_image": {
|
||||
"large_url": "https://example.com/uploads/event_image/3453/large_event_image.jpg",
|
||||
"medium_url": "https://example.com/uploads/event_image/3453/medium_event_image.jpg",
|
||||
"small_url": "https://example.com/uploads/event_image/3453/small_event_image.jpg"
|
||||
},
|
||||
"prices": {
|
||||
"normal": {
|
||||
"name": "Plein tarif",
|
||||
@ -53,7 +75,8 @@ class OpenAPI::V1::EventsDoc < OpenAPI::V1::BaseDoc
|
||||
"name": "Tarif réduit",
|
||||
"amount": 4000
|
||||
},
|
||||
}
|
||||
},
|
||||
"url": "https://example.com/#!/events/182"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1 +1,3 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
json.extract! event, :id, :title, :description, :updated_at, :created_at
|
||||
|
@ -1,8 +1,13 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
json.events @events do |event|
|
||||
json.partial! 'open_api/v1/events/event', event: event
|
||||
json.extract! event, :nb_total_places, :nb_free_places
|
||||
json.start_at event.availability.start_at
|
||||
json.end_at event.availability.end_at
|
||||
json.category event.category.name
|
||||
json.themes event.event_themes&.map(&:name)
|
||||
json.age_range event.age_range&.name
|
||||
if event.event_image
|
||||
json.event_image do
|
||||
json.large_url root_url.chomp('/') + event.event_image.attachment.large.url
|
||||
@ -23,4 +28,5 @@ json.events @events do |event|
|
||||
end
|
||||
end
|
||||
end
|
||||
json.url URI.join("#{ENV.fetch('DEFAULT_PROTOCOL')}://#{ENV.fetch('DEFAULT_HOST')}", "/#!/events/#{event.id}")
|
||||
end
|
||||
|
@ -12,6 +12,21 @@ class OpenApi::EventsTest < ActionDispatch::IntegrationTest
|
||||
test 'list all events' do
|
||||
get '/open_api/v1/events', headers: open_api_headers(@token)
|
||||
assert_response :success
|
||||
events = json_response(response.body)
|
||||
assert_not_empty events[:events]
|
||||
|
||||
assert(events[:events].all? { |event| !event[:id].nil? })
|
||||
assert(events[:events].all? { |event| !event[:title].nil? })
|
||||
assert(events[:events].all? { |event| !event[:description].nil? })
|
||||
assert(events[:events].all? { |event| !event[:updated_at].nil? })
|
||||
assert(events[:events].all? { |event| !event[:created_at].nil? })
|
||||
assert(events[:events].all? { |event| !event[:nb_total_places].nil? })
|
||||
assert(events[:events].all? { |event| !event[:nb_free_places].nil? })
|
||||
assert(events[:events].all? { |event| !event[:start_at].nil? })
|
||||
assert(events[:events].all? { |event| !event[:end_at].nil? })
|
||||
assert(events[:events].all? { |event| !event[:category].nil? })
|
||||
assert(events[:events].all? { |event| !event[:prices][:normal].nil? })
|
||||
assert(events[:events].all? { |event| !event[:url].nil? })
|
||||
end
|
||||
|
||||
test 'list all events with pagination' do
|
||||
|
Loading…
x
Reference in New Issue
Block a user