Pre-doc APIs

This commit is contained in:
Xavier J 2016-02-26 14:16:17 +01:00
parent c971849312
commit 3e62dd01fb
5 changed files with 180 additions and 12 deletions

View file

@ -2,6 +2,7 @@ class API::V1::DossiersController < APIController
api :GET, '/procedures/:procedure_id/dossiers/', 'Liste de tous les dossiers d\'une procédure' api :GET, '/procedures/:procedure_id/dossiers/', 'Liste de tous les dossiers d\'une procédure'
param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true
param :token, String, desc: "Token administrateur", required: true
error code: 401, desc: "Non authorisé" error code: 401, desc: "Non authorisé"
error code: 404, desc: "Procédure inconnue" error code: 404, desc: "Procédure inconnue"
@ -23,7 +24,8 @@ class API::V1::DossiersController < APIController
api :GET, '/procedures/:procedure_id/dossiers/:id', 'Informations du dossier d\'une procédure' api :GET, '/procedures/:procedure_id/dossiers/:id', 'Informations du dossier d\'une procédure'
param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true param :procedure_id, Integer, desc: "L'identifiant de la procédure", required: true
param :dossier_id, Integer, desc: "L'identifiant de la procédure", required: true param :dossier_id, Integer, desc: "L'identifiant du dossier", required: true
param :token, String, desc: "Token administrateur", required: true
error code: 401, desc: "Non authorisé" error code: 401, desc: "Non authorisé"
error code: 404, desc: "Procédure ou dossier inconnu" error code: 404, desc: "Procédure ou dossier inconnu"

View file

@ -1,6 +1,7 @@
class API::V1::ProceduresController < APIController class API::V1::ProceduresController < APIController
api :GET, '/procedures/:id', 'Informations concernant une procédure' api :GET, '/procedures/:id', 'Informations concernant une procédure'
param :id, Integer, desc: "L'identifiant de la procédure", required: true param :id, Integer, desc: "L'identifiant de la procédure", required: true
param :token, String, desc: "Token administrateur", required: true
error code: 401, desc: "Non authorisé" error code: 401, desc: "Non authorisé"
error code: 404, desc: "Procédure inconnue" error code: 404, desc: "Procédure inconnue"

165
doc/apipie_examples.json Normal file
View file

@ -0,0 +1,165 @@
{
"dossiers#index": [
{
"verb": "GET",
"path": "/api/v1/procedures/2/dossiers",
"versions": [
"1.0"
],
"query": "token=92cf04673cb66ab57a0c45e085b5140398ab4b6c",
"request_data": null,
"response_data": {
"dossiers": [
{
"id": 2,
"nom_projet": "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger",
"updated_at": "2008-09-01T08:05:00.000Z"
}
],
"pagination": {
"page": 1,
"resultats_par_page": 12,
"nombre_de_page": 1
}
},
"code": "200",
"show_in_doc": 1,
"recorded": true
}
],
"dossiers#show": [
{
"verb": "GET",
"path": "/api/v1/procedures/1/dossiers/1",
"versions": [
"1.0"
],
"query": "token=7cba5df87cf134d07c3c467eb21b4f2a2b2605be",
"request_data": null,
"response_data": {
"dossier": {
"id": 1,
"nom_projet": "Demande de subvention dans le cadre d'accompagnement d'enfant à l'étranger",
"description": "Ma super description",
"created_at": "2008-09-01T08:05:00.000Z",
"updated_at": "2008-09-01T08:05:00.000Z",
"archived": false,
"mandataire_social": false,
"entreprise": {
"siren": "440117620",
"capital_social": 537100000,
"numero_tva_intracommunautaire": "FR27440117620",
"forme_juridique": "SA à conseil d'administration (s.a.i.)",
"forme_juridique_code": "5599",
"nom_commercial": "GRTGAZ",
"raison_sociale": "GRTGAZ",
"siret_siege_social": "44011762001530",
"code_effectif_entreprise": "51",
"date_creation": "2016-01-28T10:16:29.000Z",
"nom": null,
"prenom": null
},
"etablissement": {
"siret": "44011762001530",
"siege_social": true,
"naf": "4950Z",
"libelle_naf": "Transports par conduites",
"adresse": "GRTGAZ\r IMMEUBLE BORA\r 6 RUE RAOUL NORDLING\r 92270 BOIS COLOMBES\r",
"numero_voie": "6",
"type_voie": "RUE",
"nom_voie": "RAOUL NORDLING",
"complement_adresse": "IMMEUBLE BORA",
"code_postal": "92270",
"localite": "BOIS COLOMBES",
"code_insee_localite": "92009"
},
"cerfa": null,
"champs": [
{
"value": null,
"type_de_champ": {
"id": 1,
"libelle": "Description",
"type": "textarea",
"order_place": 1,
"description": "description de votre projet"
}
}
],
"pieces_justificatives": [
{
"url": null,
"type_de_piece_justificative": {
"id": 1,
"libelle": "RIB",
"description": "Releve identité bancaire"
}
},
{
"url": null,
"type_de_piece_justificative": {
"id": 2,
"libelle": "Attestation MSA",
"description": "recuperation automatique"
}
}
]
}
},
"code": "200",
"show_in_doc": 1,
"recorded": true
}
],
"procedures#show": [
{
"verb": "GET",
"path": "/api/v1/procedures/3",
"versions": [
"1.0"
],
"query": "token=cc00dc59ddc89f64c6310bb4e25c55eeb63ee89c",
"request_data": null,
"response_data": {
"procedure": {
"label": "Demande de subvention",
"link": "http://localhost",
"id": 3,
"description": "Demande de subvention à l'intention des associations",
"organisation": "Orga SGMAP",
"direction": "direction SGMAP",
"archived": false,
"geographic_information": {
"use_api_carto": false,
"quartiers_prioritaires": false,
"cadastre": false
},
"types_de_champ": [
{
"id": 3,
"libelle": "Description",
"type": "textarea",
"order_place": 1,
"description": "description de votre projet"
}
],
"types_de_piece_justificative": [
{
"id": 5,
"libelle": "RIB",
"description": "Releve identité bancaire"
},
{
"id": 6,
"libelle": "Attestation MSA",
"description": "recuperation automatique"
}
]
}
},
"code": "200",
"show_in_doc": 1,
"recorded": true
}
]
}

View file

@ -8,9 +8,9 @@ describe API::V1::DossiersController do
it { expect(described_class).to be < APIController } it { expect(described_class).to be < APIController }
describe 'GET index' do describe 'GET index' do
let(:response) { get :index, token: admin.api_token, procedure_id: procedure_id } let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id }
subject { response } subject { retour }
context 'when procedure is not found' do context 'when procedure is not found' do
let(:procedure_id) { 99_999_999 } let(:procedure_id) { 99_999_999 }
@ -26,10 +26,10 @@ describe API::V1::DossiersController do
let(:procedure_id) { procedure.id } let(:procedure_id) { procedure.id }
let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) } let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) }
let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } } let!(:dossier) { Timecop.freeze(date_creation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } }
let(:body) { JSON.parse(response.body, symbolize_names: true) } let(:body) { JSON.parse(retour.body, symbolize_names: true) }
it 'return REST code 200', :show_in_doc do it 'return REST code 200', :show_in_doc do
expect(response.code).to eq('200') expect(retour.code).to eq('200')
end end
it { expect(body).to have_key :pagination } it { expect(body).to have_key :pagination }
@ -59,7 +59,7 @@ describe API::V1::DossiersController do
end end
context 'when there are multiple pages' do context 'when there are multiple pages' do
let(:response) { get :index, token: admin.api_token, procedure_id: procedure_id, page: 2 } let(:retour) { get :index, token: admin.api_token, procedure_id: procedure_id, page: 2 }
let!(:dossier1) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } let!(:dossier1) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') }
let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } let!(:dossier2) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') }
@ -80,8 +80,8 @@ describe API::V1::DossiersController do
end end
describe 'GET show' do describe 'GET show' do
let(:response) { get :show, token: admin.api_token, procedure_id: procedure_id, id: dossier_id } let(:retour) { get :show, token: admin.api_token, procedure_id: procedure_id, id: dossier_id }
subject { response } subject { retour }
context 'when procedure is not found' do context 'when procedure is not found' do
let(:procedure_id) { 99_999_999 } let(:procedure_id) { 99_999_999 }
@ -115,12 +115,12 @@ describe API::V1::DossiersController do
let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) } let(:date_creation) { Time.local(2008, 9, 1, 10, 5, 0) }
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(retour.body, symbolize_names: true) }
let(:field_list) { [:id, :nom_projet, :created_at, :updated_at, :description, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :pieces_justificatives, :champs] } let(:field_list) { [:id, :nom_projet, :created_at, :updated_at, :description, :archived, :mandataire_social, :entreprise, :etablissement, :cerfa, :pieces_justificatives, :champs] }
subject { body[:dossier] } subject { body[:dossier] }
it 'return REST code 200', :show_in_doc do it 'return REST code 200', :show_in_doc do
expect(response.code).to eq('200') expect(retour.code).to eq('200')
end end
it { expect(subject[:id]).to eq(dossier.id) } it { expect(subject[:id]).to eq(dossier.id) }
it { expect(subject[:nom_projet]).to eq(dossier.nom_projet) } it { expect(subject[:nom_projet]).to eq(dossier.nom_projet) }

View file

@ -15,7 +15,7 @@ describe API::V1::ProceduresController do
it { expect(subject.status).to eq(404) } it { expect(subject.status).to eq(404) }
end end
context 'when procedure exist' do context 'when procedure exist' do
let(:procedure) { create(:procedure, administrateur: admin) } let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, administrateur: admin) }
subject { get :show, id: procedure, token: admin.api_token } subject { get :show, id: procedure, token: admin.api_token }
it 'return REST code 200', :show_in_doc do it 'return REST code 200', :show_in_doc do
@ -32,7 +32,7 @@ describe API::V1::ProceduresController do
it { expect(subject[:label]).to eq(procedure.libelle) } it { expect(subject[:label]).to eq(procedure.libelle) }
it { expect(subject[:description]).to eq(procedure.description) } it { expect(subject[:description]).to eq(procedure.description) }
it { expect(subject[:organisation]).to eq(procedure.organisation) } it { expect(subject[:organisation]).to eq(procedure.organisation) }
it { expect(subject[:direction]).to eq(procedure.direction) } it { expect(subject[:direction]).to eq(proced,ure.direction) }
it { expect(subject[:link]).to eq(procedure.lien_demarche) } it { expect(subject[:link]).to eq(procedure.lien_demarche) }
it { expect(subject[:archived]).to eq(procedure.archived) } it { expect(subject[:archived]).to eq(procedure.archived) }
it { is_expected.to have_key(:types_de_champ) } it { is_expected.to have_key(:types_de_champ) }