# frozen_string_literal: true require 'spec_helper' describe DiscourseApi::API::Polls do subject { DiscourseApi::Client.new("#{host}", "test_d7fd0429940", "test_user") } describe "#poll vote" do before do path = "#{host}/polls/vote" stub_put(path) .to_return(body: fixture("polls_vote.json"), headers: { content_type: "application/json" }) end it "requests the correct resource" do options = ['8b4736b1ae3dfb5a28088530f036f9e5'] subject.poll_vote post_id: 5, poll_name: 'poll', options: options expect(a_put("#{host}/polls/vote")).to have_been_made end it "returns the expected votes" do options = ['8b4736b1ae3dfb5a28088530f036f9e5'] vote = subject.poll_vote post_id: 5, poll_name: 'poll', options: options expect(vote.body).to be_a Hash expect(vote.body['poll']['options']).to be_an Array expect(vote.body['vote']).to eq(['8b4736b1ae3dfb5a28088530f036f9e5']) end describe "#poll toggle_status" do before do path = "#{host}/polls/toggle_status" stub_put(path) .to_return(body: fixture("polls_toggle_status.json"), headers: { content_type: "application/json" }) end it "toggles the poll status to closed" do subject.toggle_poll_status post_id: 5, poll_name: 'poll', status: 'closed' expect(a_put("#{host}/polls/toggle_status")).to have_been_made end it "returns the expected results of closed poll" do returned_poll_status = subject.toggle_poll_status post_id: 5, poll_name: 'poll', status: 'closed' expect(returned_poll_status.body).to be_a Hash returned_poll_status.body['poll']['options'].each { |g| expect(g).to be_a Hash } end end describe "#poll voters" do before do stub_get("#{host}/polls/voters.json?post_id=5&poll_name=poll") .to_return(body: fixture("polls_voters.json"), headers: { content_type: "application/json" }) end it "requests the correct resource" do subject.poll_voters post_id: 5, poll_name: 'poll' expect(a_get("#{host}/polls/voters.json?post_id=5&poll_name=poll")).to have_been_made end it "returns the expected votes" do voters = subject.poll_voters post_id: 5, poll_name: 'poll' expect(voters).to be_a Hash voters.each { |g| expect(g).to be_an Array } expect(voters['voters']['e539a9df8700d0d05c69356a07b768cf']).to be_an Array expect(voters['voters']['e539a9df8700d0d05c69356a07b768cf'][0]['id']).to eq(356) end end end end