summaryrefslogtreecommitdiff
path: root/spec/graphql/types/merge_request_type_spec.rb
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@gitlab.com>2019-06-20 08:02:33 +0000
committerDouwe Maan <douwe@gitlab.com>2019-06-20 08:02:33 +0000
commit406808583c2392a0b57f68f98b2418e9d23b23ab (patch)
tree98613723a6caf6dc152f9ff431e75906ebe2c5ca /spec/graphql/types/merge_request_type_spec.rb
parentadeccba13676b831335e2f12f779f77602298b31 (diff)
downloadgitlab-ce-406808583c2392a0b57f68f98b2418e9d23b23ab.tar.gz
Render GFM html in GraphQL
This adds a `markdown_field` to our types. Using this helper will render a model's markdown field using the existing `MarkupHelper` with the context of the GraphQL query available to the helper. Having the context available to the helper is needed for redacting links to resources that the current user is not allowed to see. Because rendering the HTML can cause queries, the complexity of a these fields is raised by 5 above the default. The markdown field helper can be used as follows: ``` markdown_field :note_html, null: false ``` This would generate a field that will render the markdown field `note` of the model. This could be overridden by adding the `method:` argument. Passing a symbol for the method name: ``` markdown_field :body_html, null: false, method: :note ``` It will have this description by default: > The GitLab Flavored Markdown rendering of `note` This could be overridden by passing a `description:` argument. The type of a `markdown_field` is always `GraphQL::STRING_TYPE`.
Diffstat (limited to 'spec/graphql/types/merge_request_type_spec.rb')
-rw-r--r--spec/graphql/types/merge_request_type_spec.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/spec/graphql/types/merge_request_type_spec.rb b/spec/graphql/types/merge_request_type_spec.rb
index fd1c782bcc5..f73bd062369 100644
--- a/spec/graphql/types/merge_request_type_spec.rb
+++ b/spec/graphql/types/merge_request_type_spec.rb
@@ -7,7 +7,20 @@ describe GitlabSchema.types['MergeRequest'] do
it { expect(described_class.interfaces).to include(Types::Notes::NoteableType.to_graphql) }
- describe 'nested head pipeline' do
- it { expect(described_class).to have_graphql_field(:head_pipeline) }
+ it 'has the expected fields' do
+ expected_fields = %w[
+ notes discussions user_permissions id iid title title_html description
+ description_html state created_at updated_at source_project target_project
+ project project_id source_project_id target_project_id source_branch
+ target_branch work_in_progress merge_when_pipeline_succeeds diff_head_sha
+ merge_commit_sha user_notes_count should_remove_source_branch
+ force_remove_source_branch merge_status in_progress_merge_commit_sha
+ merge_error allow_collaboration should_be_rebased rebase_commit_sha
+ rebase_in_progress merge_commit_message default_merge_commit_message
+ merge_ongoing source_branch_exists mergeable_discussions_state web_url
+ upvotes downvotes subscribed head_pipeline pipelines task_completion_status
+ ]
+
+ is_expected.to have_graphql_fields(*expected_fields)
end
end