From 3af958bc925ce648806a9b67b71592a56c76fe75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Mon, 23 Sep 2019 19:11:32 +0200 Subject: [PATCH] Simplify checking attributes in GraphQL specs Since we're obtaining titles and usernames in the response, it's easier to compare them to titles and usernames we manually set. Furthermore, this way we avoid many useless assignments. --- spec/lib/graphql_spec.rb | 76 ++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/spec/lib/graphql_spec.rb b/spec/lib/graphql_spec.rb index 1731f4ae6..258fa0614 100644 --- a/spec/lib/graphql_spec.rb +++ b/spec/lib/graphql_spec.rb @@ -133,13 +133,13 @@ describe "Consul Schema" do describe "Proposals" do it "does not include hidden proposals" do - visible_proposal = create(:proposal) - hidden_proposal = create(:proposal, :hidden) + create(:proposal, title: "Visible") + create(:proposal, :hidden, title: "Hidden") response = execute("{ proposals { edges { node { title } } } }") received_titles = extract_fields(response, "proposals", "title") - expect(received_titles).to match_array [visible_proposal.title] + expect(received_titles).to match_array ["Visible"] end it "includes proposals of authors even if public activity is set to false" do @@ -156,13 +156,13 @@ describe "Consul Schema" do end it "does not link author if public activity is set to false" do - visible_author = create(:user, :with_proposal, public_activity: true) - hidden_author = create(:user, :with_proposal, public_activity: false) + create(:user, :with_proposal, username: "public", public_activity: true) + create(:user, :with_proposal, username: "private", public_activity: false) response = execute("{ proposals { edges { node { public_author { username } } } } }") received_authors = extract_fields(response, "proposals", "public_author.username") - expect(received_authors).to match_array [visible_author.username] + expect(received_authors).to match_array ["public"] end it "only returns date and hour for created_at" do @@ -201,13 +201,13 @@ describe "Consul Schema" do describe "Debates" do it "does not include hidden debates" do - visible_debate = create(:debate) - hidden_debate = create(:debate, :hidden) + create(:debate, title: "Visible") + create(:debate, :hidden, title: "Hidden") response = execute("{ debates { edges { node { title } } } }") received_titles = extract_fields(response, "debates", "title") - expect(received_titles).to match_array [visible_debate.title] + expect(received_titles).to match_array ["Visible"] end it "includes debates of authors even if public activity is set to false" do @@ -224,13 +224,13 @@ describe "Consul Schema" do end it "does not link author if public activity is set to false" do - visible_author = create(:user, :with_debate, public_activity: true) - hidden_author = create(:user, :with_debate, public_activity: false) + create(:user, :with_debate, username: "public", public_activity: true) + create(:user, :with_debate, username: "private", public_activity: false) response = execute("{ debates { edges { node { public_author { username } } } } }") received_authors = extract_fields(response, "debates", "public_author.username") - expect(received_authors).to match_array [visible_author.username] + expect(received_authors).to match_array ["public"] end it "only returns date and hour for created_at" do @@ -284,62 +284,62 @@ describe "Consul Schema" do end it "does not link author if public activity is set to false" do - visible_author = create(:user, :with_comment, public_activity: true) - hidden_author = create(:user, :with_comment, public_activity: false) + create(:user, :with_comment, username: "public", public_activity: true) + create(:user, :with_comment, username: "private", public_activity: false) response = execute("{ comments { edges { node { public_author { username } } } } }") received_authors = extract_fields(response, "comments", "public_author.username") - expect(received_authors).to match_array [visible_author.username] + expect(received_authors).to match_array ["public"] end it "does not include hidden comments" do - visible_comment = create(:comment) - hidden_comment = create(:comment, :hidden) + create(:comment, body: "Visible") + create(:comment, :hidden, body: "Hidden") response = execute("{ comments { edges { node { body } } } }") received_comments = extract_fields(response, "comments", "body") - expect(received_comments).to match_array [visible_comment.body] + expect(received_comments).to match_array ["Visible"] end it "does not include comments from hidden proposals" do visible_proposal = create(:proposal) hidden_proposal = create(:proposal, :hidden) - visible_proposal_comment = create(:comment, commentable: visible_proposal) - hidden_proposal_comment = create(:comment, commentable: hidden_proposal) + create(:comment, commentable: visible_proposal, body: "I can see the proposal") + create(:comment, commentable: hidden_proposal, body: "Someone hid the proposal!") response = execute("{ comments { edges { node { body } } } }") received_comments = extract_fields(response, "comments", "body") - expect(received_comments).to match_array [visible_proposal_comment.body] + expect(received_comments).to match_array ["I can see the proposal"] end it "does not include comments from hidden debates" do visible_debate = create(:debate) hidden_debate = create(:debate, :hidden) - visible_debate_comment = create(:comment, commentable: visible_debate) - hidden_debate_comment = create(:comment, commentable: hidden_debate) + create(:comment, commentable: visible_debate, body: "I can see the debate") + create(:comment, commentable: hidden_debate, body: "Someone hid the debate!") response = execute("{ comments { edges { node { body } } } }") received_comments = extract_fields(response, "comments", "body") - expect(received_comments).to match_array [visible_debate_comment.body] + expect(received_comments).to match_array ["I can see the debate"] end it "does not include comments from hidden polls" do visible_poll = create(:poll) hidden_poll = create(:poll, :hidden) - visible_poll_comment = create(:comment, commentable: visible_poll) - hidden_poll_comment = create(:comment, commentable: hidden_poll) + create(:comment, commentable: visible_poll, body: "I can see the poll") + create(:comment, commentable: hidden_poll, body: "This poll is hidden!") response = execute("{ comments { edges { node { body } } } }") received_comments = extract_fields(response, "comments", "body") - expect(received_comments).to match_array [visible_poll_comment.body] + expect(received_comments).to match_array ["I can see the poll"] end it "does not include comments of debates that are not public" do @@ -386,13 +386,13 @@ describe "Consul Schema" do end it "does not include valuation comments" do - visible_comment = create(:comment) - valuation_comment = create(:comment, :valuation) + create(:comment, body: "Regular comment") + create(:comment, :valuation, body: "Valuation comment") response = execute("{ comments { edges { node { body } } } }") received_comments = extract_fields(response, "comments", "body") - expect(received_comments).not_to include(valuation_comment.body) + expect(received_comments).not_to include "Valuation comment" end end @@ -413,13 +413,13 @@ describe "Consul Schema" do visible_proposal = create(:proposal) hidden_proposal = create(:proposal, :hidden) - visible_proposal_notification = create(:proposal_notification, proposal: visible_proposal) - hidden_proposal_notification = create(:proposal_notification, proposal: hidden_proposal) + create(:proposal_notification, proposal: visible_proposal, title: "I can see the proposal") + create(:proposal_notification, proposal: hidden_proposal, title: "Someone hid the proposal!") response = execute("{ proposal_notifications { edges { node { title } } } }") received_notifications = extract_fields(response, "proposal_notifications", "title") - expect(received_notifications).to match_array [visible_proposal_notification.title] + expect(received_notifications).to match_array ["I can see the proposal"] end it "does not include proposal notifications for proposals that are not public" do @@ -444,16 +444,16 @@ describe "Consul Schema" do end it "only links proposal if public" do - visible_proposal = create(:proposal) - hidden_proposal = create(:proposal, :hidden) + visible_proposal = create(:proposal, title: "Visible") + hidden_proposal = create(:proposal, :hidden, title: "Hidden") - visible_proposal_notification = create(:proposal_notification, proposal: visible_proposal) - hidden_proposal_notification = create(:proposal_notification, proposal: hidden_proposal) + create(:proposal_notification, proposal: visible_proposal) + create(:proposal_notification, proposal: hidden_proposal) response = execute("{ proposal_notifications { edges { node { proposal { title } } } } }") received_proposals = extract_fields(response, "proposal_notifications", "proposal.title") - expect(received_proposals).to match_array [visible_proposal.title] + expect(received_proposals).to match_array ["Visible"] end end