Commit c1968f5b authored by Nathan Friend's avatar Nathan Friend

Merge branch '334792-improve-get_graphql_query_as_string-load-fragments' into 'master'

Remove get_graphql_query_as_string fragment_paths

See merge request gitlab-org/gitlab!65129
parents 2cf8a20b e2518f00
...@@ -891,14 +891,13 @@ describe GraphQL::Query, type: :request do ...@@ -891,14 +891,13 @@ describe GraphQL::Query, type: :request do
include GraphqlHelpers include GraphqlHelpers
all_releases_query_path = 'releases/graphql/queries/all_releases.query.graphql' all_releases_query_path = 'releases/graphql/queries/all_releases.query.graphql'
fragment_paths = ['releases/graphql/fragments/release.fragment.graphql']
before(:all) do before(:all) do
clean_frontend_fixtures('graphql/releases/') clean_frontend_fixtures('graphql/releases/')
end end
it "graphql/#{all_releases_query_path}.json" do it "graphql/#{all_releases_query_path}.json" do
query = get_graphql_query_as_string(all_releases_query_path, fragment_paths) query = get_graphql_query_as_string(all_releases_query_path)
post_graphql(query, current_user: admin, variables: { fullPath: project.full_path }) post_graphql(query, current_user: admin, variables: { fullPath: project.full_path })
...@@ -910,10 +909,6 @@ end ...@@ -910,10 +909,6 @@ end
This will create a new fixture located at This will create a new fixture located at
`tmp/tests/frontend/fixtures-ee/graphql/releases/graphql/queries/all_releases.query.graphql.json`. `tmp/tests/frontend/fixtures-ee/graphql/releases/graphql/queries/all_releases.query.graphql.json`.
You will need to provide the paths to all fragments used by the query.
`get_graphql_query_as_string` reads all of the provided file paths and returns
the result as a single, concatenated string.
You can import the JSON fixture in a Jest test using the `getJSONFixture` method You can import the JSON fixture in a Jest test using the `getJSONFixture` method
[as described below](#use-fixtures). [as described below](#use-fixtures).
......
...@@ -61,13 +61,12 @@ RSpec.describe 'Projects (JavaScript fixtures)', type: :controller do ...@@ -61,13 +61,12 @@ RSpec.describe 'Projects (JavaScript fixtures)', type: :controller do
clean_frontend_fixtures('graphql/projects/access_tokens') clean_frontend_fixtures('graphql/projects/access_tokens')
end end
fragment_paths = ['graphql_shared/fragments/pageInfo.fragment.graphql']
base_input_path = 'access_tokens/graphql/queries/' base_input_path = 'access_tokens/graphql/queries/'
base_output_path = 'graphql/projects/access_tokens/' base_output_path = 'graphql/projects/access_tokens/'
query_name = 'get_projects.query.graphql' query_name = 'get_projects.query.graphql'
it "#{base_output_path}#{query_name}.json" do it "#{base_output_path}#{query_name}.json" do
query = get_graphql_query_as_string("#{base_input_path}#{query_name}", fragment_paths) query = get_graphql_query_as_string("#{base_input_path}#{query_name}")
post_graphql(query, current_user: user, variables: { search: '', first: 2 }) post_graphql(query, current_user: user, variables: { search: '', first: 2 })
......
...@@ -133,15 +133,13 @@ RSpec.describe 'Releases (JavaScript fixtures)' do ...@@ -133,15 +133,13 @@ RSpec.describe 'Releases (JavaScript fixtures)' do
all_releases_query_path = 'releases/graphql/queries/all_releases.query.graphql' all_releases_query_path = 'releases/graphql/queries/all_releases.query.graphql'
one_release_query_path = 'releases/graphql/queries/one_release.query.graphql' one_release_query_path = 'releases/graphql/queries/one_release.query.graphql'
one_release_for_editing_query_path = 'releases/graphql/queries/one_release_for_editing.query.graphql' one_release_for_editing_query_path = 'releases/graphql/queries/one_release_for_editing.query.graphql'
release_fragment_path = 'releases/graphql/fragments/release.fragment.graphql'
release_for_editing_fragment_path = 'releases/graphql/fragments/release_for_editing.fragment.graphql'
before(:all) do before(:all) do
clean_frontend_fixtures('graphql/releases/') clean_frontend_fixtures('graphql/releases/')
end end
it "graphql/#{all_releases_query_path}.json" do it "graphql/#{all_releases_query_path}.json" do
query = get_graphql_query_as_string(all_releases_query_path, [release_fragment_path]) query = get_graphql_query_as_string(all_releases_query_path)
post_graphql(query, current_user: admin, variables: { fullPath: project.full_path }) post_graphql(query, current_user: admin, variables: { fullPath: project.full_path })
...@@ -150,7 +148,7 @@ RSpec.describe 'Releases (JavaScript fixtures)' do ...@@ -150,7 +148,7 @@ RSpec.describe 'Releases (JavaScript fixtures)' do
end end
it "graphql/#{one_release_query_path}.json" do it "graphql/#{one_release_query_path}.json" do
query = get_graphql_query_as_string(one_release_query_path, [release_fragment_path]) query = get_graphql_query_as_string(one_release_query_path)
post_graphql(query, current_user: admin, variables: { fullPath: project.full_path, tagName: release.tag }) post_graphql(query, current_user: admin, variables: { fullPath: project.full_path, tagName: release.tag })
...@@ -159,7 +157,7 @@ RSpec.describe 'Releases (JavaScript fixtures)' do ...@@ -159,7 +157,7 @@ RSpec.describe 'Releases (JavaScript fixtures)' do
end end
it "graphql/#{one_release_for_editing_query_path}.json" do it "graphql/#{one_release_for_editing_query_path}.json" do
query = get_graphql_query_as_string(one_release_for_editing_query_path, [release_for_editing_fragment_path]) query = get_graphql_query_as_string(one_release_for_editing_query_path)
post_graphql(query, current_user: admin, variables: { fullPath: project.full_path, tagName: release.tag }) post_graphql(query, current_user: admin, variables: { fullPath: project.full_path, tagName: release.tag })
......
...@@ -36,10 +36,7 @@ RSpec.describe 'Runner (JavaScript fixtures)' do ...@@ -36,10 +36,7 @@ RSpec.describe 'Runner (JavaScript fixtures)' do
get_runners_query_name = 'get_runners.query.graphql' get_runners_query_name = 'get_runners.query.graphql'
let_it_be(:query) do let_it_be(:query) do
get_graphql_query_as_string("#{query_path}#{get_runners_query_name}", [ get_graphql_query_as_string("#{query_path}#{get_runners_query_name}")
'runner/graphql/runner_node.fragment.graphql',
'graphql_shared/fragments/pageInfo.fragment.graphql'
])
end end
it "#{fixtures_path}#{get_runners_query_name}.json" do it "#{fixtures_path}#{get_runners_query_name}.json" do
...@@ -59,9 +56,7 @@ RSpec.describe 'Runner (JavaScript fixtures)' do ...@@ -59,9 +56,7 @@ RSpec.describe 'Runner (JavaScript fixtures)' do
get_runner_query_name = 'get_runner.query.graphql' get_runner_query_name = 'get_runner.query.graphql'
let_it_be(:query) do let_it_be(:query) do
get_graphql_query_as_string("#{query_path}#{get_runner_query_name}", [ get_graphql_query_as_string("#{query_path}#{get_runner_query_name}")
'runner/graphql/runner_details.fragment.graphql'
])
end end
it "#{fixtures_path}#{get_runner_query_name}.json" do it "#{fixtures_path}#{get_runner_query_name}.json" do
......
...@@ -43,12 +43,14 @@ module JavaScriptFixturesHelpers ...@@ -43,12 +43,14 @@ module JavaScriptFixturesHelpers
# Public: Reads a GraphQL query from the filesystem as a string # Public: Reads a GraphQL query from the filesystem as a string
# #
# query_path - file path to the GraphQL query, relative to `app/assets/javascripts` # query_path - file path to the GraphQL query, relative to `app/assets/javascripts`
# fragment_paths - an optional array of file paths to any fragments the query uses, def get_graphql_query_as_string(query_path)
# also relative to `app/assets/javascripts` path = Rails.root / 'app/assets/javascripts' / query_path
def get_graphql_query_as_string(query_path, fragment_paths = []) queries = Gitlab::Graphql::Queries.find(path)
[query_path, *fragment_paths].map do |path| if queries.length == 1
File.read(File.join(Rails.root, '/app/assets/javascripts', path)) queries.first.text(mode: Gitlab.ee? ? :ee : :ce )
end.join("\n") else
raise "Could not find query file at #{path}, please check your query_path" % path
end
end end
private private
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment