Complete API Dossier

This commit is contained in:
Xavier J 2016-02-26 12:17:41 +01:00
parent a316165792
commit 16c72e7478
7 changed files with 115 additions and 35 deletions

View file

@ -0,0 +1,6 @@
class CerfaSerializer < ActiveModel::Serializer
attributes :content_url => :url
has_one :type_de_champ
end

View file

@ -0,0 +1,5 @@
class ChampSerializer < ActiveModel::Serializer
attributes :value
has_one :type_de_champ
end

View file

@ -4,8 +4,12 @@ class DossierSerializer < ActiveModel::Serializer
:description, :description,
:created_at, :created_at,
:updated_at, :updated_at,
:archived :archived,
:mandataire_social
has_one :entreprise has_one :entreprise
has_one :etablissement has_one :etablissement
has_one :cerfa
has_many :champs
has_many :pieces_justificatives
end end

View file

@ -0,0 +1,5 @@
class PieceJustificativeSerializer < ActiveModel::Serializer
attributes :content_url => :url
has_one :type_de_piece_justificative
end

View file

@ -1,7 +1,7 @@
class TypeDeChampSerializer < ActiveModel::Serializer class TypeDeChampSerializer < ActiveModel::Serializer
attributes :id, attributes :id,
:libelle, :libelle,
:type_champ, {:type_champ => :type},
:order_place, :order_place,
:description :description
end end

View file

@ -2,7 +2,7 @@ require 'spec_helper'
describe API::V1::DossiersController do describe API::V1::DossiersController do
let(:admin) { create(:administrateur) } let(:admin) { create(:administrateur) }
let(:procedure) { create(:procedure, administrateur: admin) } let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, administrateur: admin) }
let(:wrong_procedure) { create(:procedure) } let(:wrong_procedure) { create(:procedure) }
it { expect(described_class).to be < APIController } it { expect(described_class).to be < APIController }
@ -114,7 +114,7 @@ describe API::V1::DossiersController do
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure) } } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure) } }
let(:dossier_id) { dossier.id } let(:dossier_id) { dossier.id }
let(:body) { JSON.parse(response.body, symbolize_names: true) } let(:body) { JSON.parse(response.body, symbolize_names: true) }
let(:field_list) { [:id, :nom_projet, :created_at, :updated_at, :description, :archived, :entreprise, :etablissement] } let(:field_list) { [:id, :nom_projet, :created_at, :updated_at, :description, :archived, :mandataire_social, :entreprise, :etablissement] }
subject { body[:dossier] } subject { body[:dossier] }
it { expect(response.code).to eq('200') } it { expect(response.code).to eq('200') }
@ -124,28 +124,30 @@ describe API::V1::DossiersController do
it { expect(subject[:updated_at]).to eq('2008-09-01T08:05:00.000Z') } it { expect(subject[:updated_at]).to eq('2008-09-01T08:05:00.000Z') }
it { expect(subject[:description]).to eq(dossier.description) } it { expect(subject[:description]).to eq(dossier.description) }
it { expect(subject[:archived]).to eq(dossier.archived) } it { expect(subject[:archived]).to eq(dossier.archived) }
it { expect(subject[:mandataire_social]).to eq(dossier.mandataire_social) }
it { expect(subject.keys).to match_array(field_list) } it { expect(subject.keys).to match_array(field_list) }
describe 'entreprise' do describe 'entreprise' do
let(:field_list) { [ let(:field_list) { [
:siren, :siren,
:capital_social, :capital_social,
:numero_tva_intracommunautaire, :numero_tva_intracommunautaire,
:forme_juridique, :forme_juridique,
:forme_juridique_code, :forme_juridique_code,
:nom_commercial, :nom_commercial,
:raison_sociale, :raison_sociale,
:siret_siege_social, :siret_siege_social,
:code_effectif_entreprise, :code_effectif_entreprise,
:date_creation, :date_creation,
:nom, :nom,
:prenom] } :prenom] }
subject { super()[:entreprise]} subject { super()[:entreprise] }
it { expect(subject[:siren]).to eq('440117620')} it { expect(subject[:siren]).to eq('440117620') }
it { expect(subject[:capital_social]).to eq(537_100_000)} it { expect(subject[:capital_social]).to eq(537_100_000) }
it { expect(subject[:numero_tva_intracommunautaire]).to eq('FR27440117620')} it { expect(subject[:numero_tva_intracommunautaire]).to eq('FR27440117620') }
it { expect(subject[:forme_juridique]).to eq('SA à conseil d\'administration (s.a.i.)')} it { expect(subject[:forme_juridique]).to eq('SA à conseil d\'administration (s.a.i.)') }
it { expect(subject[:forme_juridique_code]).to eq('5599') } it { expect(subject[:forme_juridique_code]).to eq('5599') }
it { expect(subject[:nom_commercial]).to eq('GRTGAZ') } it { expect(subject[:nom_commercial]).to eq('GRTGAZ') }
it { expect(subject[:raison_sociale]).to eq('GRTGAZ') } it { expect(subject[:raison_sociale]).to eq('GRTGAZ') }
@ -155,22 +157,80 @@ describe API::V1::DossiersController do
it { expect(subject.keys).to match_array(field_list) } it { expect(subject.keys).to match_array(field_list) }
end end
describe 'pieces_justificatives' do
let(:field_list) { [
:url] }
subject { super()[:pieces_justificatives] }
it { expect(subject.length).to eq 2 }
describe 'first piece justificative' do
subject { super().first }
it { expect(subject.keys.include?(:url)).to be_truthy }
it { expect(subject.keys.include?(:type_de_piece_justificative)).to be_truthy }
describe 'type de piece justificative' do
let(:field_list) { [
:id,
:libelle,
:description] }
subject { super()[:type_de_piece_justificative] }
it { expect(subject.keys.include?(:id)).to be_truthy }
it { expect(subject[:libelle]).to eq('RIB') }
it { expect(subject[:description]).to eq('Releve identité bancaire') }
end
end
end
describe 'champs' do
let(:field_list) { [
:url] }
subject { super()[:champs] }
it { expect(subject.length).to eq 1 }
describe 'first champs' do
subject { super().first }
it { expect(subject.keys.include?(:value)).to be_truthy }
it { expect(subject.keys.include?(:type_de_champ)).to be_truthy }
describe 'type de champ' do
let(:field_list) { [
:id,
:libelle,
:description,
:order_place,
:type] }
subject { super()[:type_de_champ] }
it { expect(subject.keys.include?(:id)).to be_truthy }
it { expect(subject[:libelle]).to eq('Description') }
it { expect(subject[:description]).to eq('description de votre projet') }
it { expect(subject.keys.include?(:order_place)).to be_truthy }
it { expect(subject[:type]).to eq('textarea') }
end
end
end
describe 'etablissement' do describe 'etablissement' do
let(:field_list) { [ let(:field_list) { [
:siret, :siret,
:siege_social, :siege_social,
:naf, :naf,
:libelle_naf, :libelle_naf,
:adresse, :adresse,
:numero_voie, :numero_voie,
:type_voie, :type_voie,
:nom_voie, :nom_voie,
:complement_adresse, :complement_adresse,
:code_postal, :code_postal,
:localite, :localite,
:code_insee_localite :code_insee_localite
] } ] }
subject { super()[:etablissement]} subject { super()[:etablissement] }
it { expect(subject[:siret]).to eq('44011762001530') } it { expect(subject[:siret]).to eq('44011762001530') }
it { expect(subject[:siege_social]).to eq(true) } it { expect(subject[:siege_social]).to eq(true) }

View file

@ -1,6 +1,6 @@
FactoryGirl.define do FactoryGirl.define do
factory :type_de_champ do factory :type_de_champ do
libelle 'Libellé' libelle 'Description'
description 'description de votre projet' description 'description de votre projet'
type_champ 'textarea' type_champ 'textarea'
order_place 1 order_place 1