Skip to content

Commit

Permalink
Generate API tests
Browse files Browse the repository at this point in the history
  • Loading branch information
maximeCony committed Apr 29, 2020
1 parent 386032b commit d79f44f
Showing 1 changed file with 89 additions and 47 deletions.
136 changes: 89 additions & 47 deletions spec/api_spec.rb
Original file line number Diff line number Diff line change
@@ -1,101 +1,143 @@
# This file is auto-generated from the same code that generates
# https://docs.patreon.com. Community pull requests against this
# file may not be accepted.

require 'json'

describe Patreon::API do
before do
@api = Patreon::API.new("some token")
end

describe "Patreon::API#fetch_user" do
describe "Patreon::API" do
before(:all) do
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get current_user" do
@api.expects(:get_json).with("current_user").returns(@response)
response = @api.fetch_user
it "should parse data" do
@api.expects(:get_json).with("identity").returns(@response)
response = @api.get_identity
assert_equal response.data.pledges.count, 5
assert_equal response.data.vanity, "corgi"
assert_equal response.data.first_name, "Corgi"
end

it "should get current_user and the user should be mutable" do
@api.expects(:get_json).with("current_user").returns(@response)
response = @api.fetch_user
assert_equal response.data.pledges.count, 5
assert_equal response.data.vanity, "corgi"
it "should allow mutating data" do
@api.expects(:get_json).with("identity").returns(@response)
response = @api.get_identity
assert_equal response.data.first_name, "Corgi"
response.data.first_name = "Jack"
assert_equal response.data.first_name, "Jack"
end

it "should get current_user correctly if field is nil" do
it "should support nill value" do
munged_response = JSON.parse(@response)
munged_response['data']['attributes']['first_name'] = nil
@api.expects(:get_json).with("current_user").returns(munged_response.to_json)
response = @api.fetch_user
assert_equal response.data.pledges.count, 5
assert_equal response.data.vanity, "corgi"
@api.expects(:get_json).with("identity").returns(munged_response.to_json)
response = @api.get_identity
assert_nil response.data.first_name
end
end

it "should get current_user with includes" do
@api.expects(:get_json).with("current_user?include=hello").returns(@response)
@api.fetch_user(includes: "hello")
describe "Patreon::API#get_campaigns" do
before(:all) do
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get current_user with fields" do
@api.expects(:get_json).with("current_user?fields%5Bhello%5D=there").returns(@response)
@api.fetch_user(fields: {hello: "there"})
it "should return data" do
resource_id = "32187"
expected_url = "campaigns"
expected_url += "?page%5Bcount%5D=10"
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_campaigns()
assert_equal response.data.id, resource_id
end
end

describe "Patreon::API#fetch_campaign" do
describe "Patreon::API#get_identity" do
before(:all) do
@response = File.read(File.expand_path("fixtures/fetch_campaign.json", __dir__))
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get fetch_campaign" do
@api.expects(:get_json).with("current_user/campaigns").returns(@response)
response = @api.fetch_campaign
assert_equal response.data.count, 1
assert_equal response.data[0].creation_name, "an unforgettable high school experience"
it "should return data" do
resource_id = "32187"
expected_url = "identity"
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_identity()
assert_equal response.data.id, resource_id
end
end

it "should get fetch_campaign with includes" do
@api.expects(:get_json).with("current_user/campaigns?include=hello").returns(@response)
@api.fetch_campaign(includes: "hello")
describe "Patreon::API#get_webhooks" do
before(:all) do
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get fetch_campaign with fields" do
@api.expects(:get_json).with("current_user/campaigns?fields%5Bhello%5D=there").returns(@response)
@api.fetch_campaign(fields: {hello: "there"})
it "should return data" do
resource_id = "32187"
expected_url = "webhooks"
expected_url += "?page%5Bcount%5D=10"
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_webhooks()
assert_equal response.data.id, resource_id
end
end

describe "Patreon::API#fetch_campaign_and_patrons" do
describe "Patreon::API#get_campaigns_by_id_members" do
before(:all) do
@response = File.read(File.expand_path("fixtures/fetch_campaign.json", __dir__))
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get fetch_campaign_and_patrons" do
@api.expects(:get_json).with("current_user/campaigns?include=rewards%2Ccreator%2Cgoals%2Cpledges").returns(@response)
@api.fetch_campaign_and_patrons
it "should return data" do
resource_id = "32187"
expected_url = "campaigns/{}/members".gsub('{}', resource_id)
expected_url += "?page%5Bcount%5D=10"
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_campaigns_by_id_members(resource_id)
assert_equal response.data.id, resource_id
end
end

it "should get fetch_campaign_and_patrons with more includes" do
@api.expects(:get_json).with("current_user/campaigns?include=doohickey%2Crewards%2Ccreator%2Cgoals%2Cpledges").returns(@response)
@api.fetch_campaign_and_patrons(includes: "doohickey")
describe "Patreon::API#get_campaigns_by_id" do
before(:all) do
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should return data" do
resource_id = "32187"
expected_url = "campaigns/{}".gsub('{}', resource_id)
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_campaigns_by_id(resource_id)
assert_equal response.data.id, resource_id
end
end

describe "Patreon::API#fetch_page_of_pledges" do
describe "Patreon::API#get_webhooks_by_id" do
before(:all) do
@response = File.read(File.expand_path("fixtures/fetch_campaign.json", __dir__))
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should get fetch_page_of_pledges" do
@api.expects(:get_json).with("campaigns/123/pledges?page%5Bcount%5D=10").returns(@response)
@api.fetch_page_of_pledges(123)
it "should return data" do
resource_id = "32187"
expected_url = "webhooks/{}".gsub('{}', resource_id)
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_webhooks_by_id(resource_id)
assert_equal response.data.id, resource_id
end
end
end

describe "Patreon::API#get_members_by_id" do
before(:all) do
@response = File.read(File.expand_path("fixtures/current_user.json", __dir__))
end

it "should return data" do
resource_id = "32187"
expected_url = "members/{}".gsub('{}', resource_id)
@api.expects(:get_json).with(expected_url).returns(@response)
response = @api.get_members_by_id(resource_id)
assert_equal response.data.id, resource_id
end
end

end

0 comments on commit d79f44f

Please sign in to comment.