From 0ca72492e3df0071ac7d0253775c188032f55cca Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 27 Jul 2023 12:19:07 +0200 Subject: [PATCH] feat(graphql): use camelize with inflection --- app/graphql/api/v2/stored_query.rb | 4 ++-- app/graphql/schema.graphql | 15 ++++++++++----- app/graphql/types/demarche_descriptor_type.rb | 11 +++++++++++ config/initializers/graphql.rb | 12 ++++++++++++ .../v2/graphql_controller_stored_queries_spec.rb | 2 +- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/app/graphql/api/v2/stored_query.rb b/app/graphql/api/v2/stored_query.rb index ff36b5df5..9111d77c0 100644 --- a/app/graphql/api/v2/stored_query.rb +++ b/app/graphql/api/v2/stored_query.rb @@ -322,8 +322,8 @@ class API::V2::StoredQuery dateFermeture notice { url } deliberation { url } - demarcheUrl - cadreJuridiqueUrl + demarcheURL + cadreJuridiqueURL service @include(if: $includeService) { ...ServiceFragment } diff --git a/app/graphql/schema.graphql b/app/graphql/schema.graphql index 773df9474..e8cdf39b9 100644 --- a/app/graphql/schema.graphql +++ b/app/graphql/schema.graphql @@ -1066,7 +1066,8 @@ type DemarcheDescriptor { """ URL du cadre juridique qui justifie le droit de collecter les données demandées dans la démarche """ - cadreJuridiqueUrl: String + cadreJuridiqueURL: String + cadreJuridiqueUrl: String @deprecated(reason: "Utilisez le champ `cadreJuridiqueURL` à la place.") """ Date de la création. @@ -1106,7 +1107,8 @@ type DemarcheDescriptor { """ URL pour commencer la démarche """ - demarcheUrl: URL + demarcheURL: URL + demarcheUrl: URL @deprecated(reason: "Utilisez le champ `demarcheURL` à la place.") """ Description de la démarche. @@ -1116,7 +1118,8 @@ type DemarcheDescriptor { """ URL ou email pour contacter le Délégué à la Protection des Données (DPO) """ - dpoUrl: String + dpoURL: String + dpoUrl: String @deprecated(reason: "Utilisez le champ `dpoURL` à la place.") """ Durée de conservation des dossiers en mois. @@ -1129,7 +1132,8 @@ type DemarcheDescriptor { notice explicative de la démarche """ notice: File - noticeUrl: URL + noticeURL: URL + noticeUrl: URL @deprecated(reason: "Utilisez le champ `noticeURL` à la place.") """ Numero de la démarche. @@ -1142,7 +1146,8 @@ type DemarcheDescriptor { """ URL où les usagers trouvent le lien vers la démarche """ - siteWebUrl: String + siteWebURL: String + siteWebUrl: String @deprecated(reason: "Utilisez le champ `siteWebURL` à la place.") """ État de la démarche. diff --git a/app/graphql/types/demarche_descriptor_type.rb b/app/graphql/types/demarche_descriptor_type.rb index c9eff3c59..5645438af 100644 --- a/app/graphql/types/demarche_descriptor_type.rb +++ b/app/graphql/types/demarche_descriptor_type.rb @@ -25,6 +25,12 @@ Cela évite l’accès récursif aux dossiers." field :duree_conservation_dossiers, Int, "Durée de conservation des dossiers en mois.", null: false + field :demarcheUrl, Types::URL, camelize: false, null: true, deprecation_reason: 'Utilisez le champ `demarcheURL` à la place.' + field :siteWebUrl, String, camelize: false, null: true, deprecation_reason: 'Utilisez le champ `siteWebURL` à la place.' + field :dpoUrl, String, camelize: false, null: true, deprecation_reason: 'Utilisez le champ `dpoURL` à la place.' + field :noticeUrl, Types::URL, camelize: false, null: true, deprecation_reason: 'Utilisez le champ `noticeURL` à la place.' + field :cadreJuridiqueUrl, String, camelize: false, null: true, deprecation_reason: 'Utilisez le champ `cadreJuridiqueURL` à la place.' + field :demarche_url, Types::URL, "URL pour commencer la démarche", null: true field :site_web_url, String, "URL où les usagers trouvent le lien vers la démarche", null: true field :dpo_url, String, "URL ou email pour contacter le Délégué à la Protection des Données (DPO)", null: true @@ -77,22 +83,27 @@ Cela évite l’accès récursif aux dossiers." def demarche_url Rails.application.routes.url_helpers.commencer_url(path: procedure.path) end + alias demarcheUrl demarche_url def dpo_url procedure.lien_dpo end + alias dpoUrl dpo_url def notice_url procedure.lien_notice end + alias noticeUrl notice_url def cadre_juridique_url procedure.cadre_juridique end + alias cadreJuridiqueUrl cadre_juridique_url def site_web_url procedure.lien_site_web end + alias siteWebUrl site_web_url def number procedure.id diff --git a/config/initializers/graphql.rb b/config/initializers/graphql.rb index e669da38b..28e39e2aa 100644 --- a/config/initializers/graphql.rb +++ b/config/initializers/graphql.rb @@ -3,3 +3,15 @@ GraphQL::RailsLogger.configure do |config| 'API::V2::GraphqlController' => ['execute'] } end + +module GraphQL + class Schema + class Member + module BuildType + def self.camelize(string) + string.camelize(:lower) + end + end + end + end +end diff --git a/spec/controllers/api/v2/graphql_controller_stored_queries_spec.rb b/spec/controllers/api/v2/graphql_controller_stored_queries_spec.rb index 09180b5ce..2833a95b9 100644 --- a/spec/controllers/api/v2/graphql_controller_stored_queries_spec.rb +++ b/spec/controllers/api/v2/graphql_controller_stored_queries_spec.rb @@ -277,7 +277,7 @@ describe API::V2::GraphqlController do it { expect(gql_errors).to be_nil expect(gql_data[:demarcheDescriptor][:id]).to eq(procedure.to_typed_id) - expect(gql_data[:demarcheDescriptor][:demarcheUrl]).to match("commencer/#{procedure.path}") + expect(gql_data[:demarcheDescriptor][:demarcheURL]).to match("commencer/#{procedure.path}") } end