Compare commits

...

2 Commits

Author SHA1 Message Date
Bilal
684883036a add medical releases support in API 2020-07-08 16:47:52 +02:00
Bilal
6e8788f9ea add misc releases support in API 2020-07-08 14:49:01 +02:00
8 changed files with 145 additions and 5 deletions

View File

@@ -0,0 +1,11 @@
class Api::MedicalReleasesController < Api::ReleasesController
deserializable_resource :medical_release, only: [:create, :update]
def model_name
"medical_release"
end
def attributes_for_index
[:name]
end
end

View File

@@ -0,0 +1,11 @@
class Api::MiscReleasesController < Api::ReleasesController
deserializable_resource :misc_release, only: [:create, :update]
def model_name
"misc_release"
end
def attributes_for_index
[:name]
end
end

View File

@@ -10,8 +10,10 @@ class Api::SyncController < Api::ApiController
@appearance_releases = (AppearanceRelease.where(project: accessible_projects)) @appearance_releases = (AppearanceRelease.where(project: accessible_projects))
@location_releases = (LocationRelease.where(project: accessible_projects)) @location_releases = (LocationRelease.where(project: accessible_projects))
@material_releases = (MaterialRelease.where(project: accessible_projects)) @material_releases = (MaterialRelease.where(project: accessible_projects))
@medical_releases = MedicalRelease.where(project: accessible_projects)
@misc_releases = MiscRelease.where(project: accessible_projects)
@talent_releases = (TalentRelease.where(project: accessible_projects)) @talent_releases = (TalentRelease.where(project: accessible_projects))
@notes = notes_query(Note.where(notable: @appearance_releases + @location_releases + @material_releases + @talent_releases + @acquired_media_releases )) @notes = notes_query(Note.where(notable: @appearance_releases + @location_releases + @material_releases + @medical_releases + @misc_releases + @talent_releases + @acquired_media_releases ))
render json: { render json: {
data: { data: {
@@ -22,6 +24,8 @@ class Api::SyncController < Api::ApiController
appearance_releases: releases_query(@appearance_releases), appearance_releases: releases_query(@appearance_releases),
location_releases: releases_query(@location_releases), location_releases: releases_query(@location_releases),
material_releases: releases_query(@material_releases), material_releases: releases_query(@material_releases),
medical_releases: releases_query(@medical_releases),
misc_releases: releases_query(@misc_releases),
talent_releases: releases_query(@talent_releases), talent_releases: releases_query(@talent_releases),
notes: @notes notes: @notes
} }

View File

@@ -2,7 +2,7 @@ require 'oath/constraints/signed_in'
require 'sidekiq/web' require 'sidekiq/web'
Rails.application.routes.draw do Rails.application.routes.draw do
AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/ AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/.freeze
concern :confirmable do concern :confirmable do
resources :video_release_confirmations, only: [:new, :create, :destroy] resources :video_release_confirmations, only: [:new, :create, :destroy]
@@ -136,8 +136,8 @@ Rails.application.routes.draw do
end end
end end
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases] RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :medical_releases, :misc_releases, :location_releases].freeze
ALL_RELEASES = RELEASES + [:music_releases, :medical_releases, :misc_releases] ALL_RELEASES = RELEASES + [:music_releases]
ALL_RELEASES.each do |release| ALL_RELEASES.each do |release|
resources release, only: [], concerns: :taggable resources release, only: [], concerns: :taggable
@@ -158,7 +158,7 @@ Rails.application.routes.draw do
resources :contract_templates, only: [:index] resources :contract_templates, only: [:index]
end end
resources :contract_templates, only: [:show] do resources :contract_templates, only: [:show] do
RELEASES.each do |release| (RELEASES - [:misc_releases, :medical_releases]).each do |release|
resources release, controller: release, only: [:create] resources release, controller: release, only: [:create]
end end
end end

View File

@@ -0,0 +1,42 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Api::MedicalReleasesController, type: :controller do
let(:current_user) { create(:user) }
let(:project) { create(:project, name: 'first', account: current_user.primary_account) }
describe '#index' do
it 'returns a succesful response' do
create(:medical_release, person_first_name: 'John', person_last_name: 'Lee', project_id: project.id)
create(:medical_release, person_first_name: 'Jane', person_last_name: 'Lee', project_id: project.id)
sign_in_to_api(current_user)
get :index, params: { project_id: project.id }
expect(response).to be_successful
expect(response.body).to include 'John'
expect(response.body).to include 'Jane'
end
end
describe '#show' do
it 'returns a succesful response' do
release1 = create(:medical_release, person_first_name: 'John', person_last_name: 'Lee', project_id: project.id)
release2 = create(:medical_release, person_first_name: 'Jane', person_last_name: 'Lee', project_id: project.id)
sign_in_to_api(current_user)
get :show, params: { id: release1 }
expect(response).to be_successful
expect(response.body).to include 'John'
expect(response.body).not_to include 'Jane'
get :show, params: { id: release2 }
expect(response).to be_successful
expect(response.body).not_to include 'John'
expect(response.body).to include 'Jane'
end
end
end

View File

@@ -0,0 +1,42 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Api::MiscReleasesController, type: :controller do
let(:current_user) { create(:user) }
let(:project) { create(:project, name: 'first', account: current_user.primary_account) }
describe '#index' do
it 'returns a succesful response' do
create(:misc_release, person_first_name: 'John', person_last_name: 'Lee', project_id: project.id)
create(:misc_release, person_first_name: 'Jane', person_last_name: 'Lee', project_id: project.id)
sign_in_to_api(current_user)
get :index, params: { project_id: project.id }
expect(response).to be_successful
expect(response.body).to include 'John'
expect(response.body).to include 'Jane'
end
end
describe '#show' do
it 'returns a succesful response' do
release1 = create(:misc_release, person_first_name: 'John', person_last_name: 'Lee', project_id: project.id)
release2 = create(:misc_release, person_first_name: 'Jane', person_last_name: 'Lee', project_id: project.id)
sign_in_to_api(current_user)
get :show, params: { id: release1 }
expect(response).to be_successful
expect(response.body).to include 'John'
expect(response.body).not_to include 'Jane'
get :show, params: { id: release2 }
expect(response).to be_successful
expect(response.body).not_to include 'John'
expect(response.body).to include 'Jane'
end
end
end

View File

@@ -18,6 +18,14 @@ releases = [
{ {
type: :material_release, type: :material_release,
obligatory_attribute: :name obligatory_attribute: :name
},
{
type: :medical_release,
obligatory_attribute: :person_name
},
{
type: :misc_release,
obligatory_attribute: :person_name
} }
] ]

View File

@@ -110,6 +110,26 @@ RSpec.describe Api::SyncController, type: :controller do
expect(guardian_photo).to include('id', 'type', 'attributes') expect(guardian_photo).to include('id', 'type', 'attributes')
expect(photo_attributes).to include('filename', 'content_type', 'url', 'thumbnail_url') expect(photo_attributes).to include('filename', 'content_type', 'url', 'thumbnail_url')
end end
it 'contains misc releases' do
create_default_data
get :index
misc_releases = attributes_for_type('misc_releases')
expect(misc_releases.first).to include('id')
end
it 'contains misc releases' do
create_default_data
get :index
medical_releases = attributes_for_type('medical_releases')
expect(medical_releases.first).to include('id')
end
end end
private private
@@ -120,6 +140,8 @@ RSpec.describe Api::SyncController, type: :controller do
create(:talent_release, project: project) create(:talent_release, project: project)
create(:location_release, project: project) create(:location_release, project: project)
create(:material_release, project: project) create(:material_release, project: project)
create(:medical_release, project: project)
create(:misc_release, project: project)
end end
def create_default_data_with_guardian_info def create_default_data_with_guardian_info