spec/unit/module_repository/forge_spec.rb in r10k-1.5.1 vs spec/unit/module_repository/forge_spec.rb in r10k-2.0.0

- old
+ new

@@ -1,11 +1,23 @@ require 'spec_helper' +require 'faraday' + require 'r10k/module_repository/forge' describe R10K::ModuleRepository::Forge do + let(:faraday_stubs) { Faraday::Adapter::Test::Stubs.new } + + let(:conn) do + Faraday.new { |builder| builder.adapter(:test, faraday_stubs) } + end + + before do + allow_any_instance_of(described_class).to receive(:make_conn).and_return conn + end + it "uses the official forge by default" do forge = described_class.new expect(forge.forge).to eq 'forgeapi.puppetlabs.com' end @@ -17,19 +29,37 @@ it "can use a private forge" do forge = described_class.new('forge.example.local') expect(forge.forge).to eq 'forge.example.local' end - describe "and the expected version is :latest", :vcr => true do + describe "and the expected version is :latest" do subject(:forge) { described_class.new } + let(:boolean_body) do + {"releases" => [ + {"version" => "1.0.1"}, + {"version" => "1.0.0"}, + {"version" => "0.9.0"} + ] + } + end + + let(:spotty_body) do + {"releases" => [ + {"version" => "0.4.0", "deleted_at" => "some point"}, + {"version" => "0.3.0"} + ] + } + end + before do - forge.conn.builder.insert_before(Faraday::Adapter::NetHttp, VCR::Middleware::Faraday) + faraday_stubs.get('/v3/modules/adrien-boolean') { [200, {}, boolean_body] } + faraday_stubs.get('/v3/modules/r10ktesting-spotty') { [200, {}, spotty_body] } end it "can fetch all versions of a given module" do - expect(forge.versions('adrien/boolean')).to eq ["0.9.0-rc1", "0.9.0", "1.0.0", "1.0.1"] + expect(forge.versions('adrien/boolean')).to eq ["0.9.0", "1.0.0", "1.0.1"] end it "can fetch the latest version of a given module" do expect(forge.latest_version('adrien/boolean')).to eq "1.0.1" end @@ -37,14 +67,14 @@ it "ignores deleted releases" do expect(forge.latest_version('r10ktesting/spotty')).to eq "0.3.0" end end - describe "it handles errors from forgeapi.puppetlabs.com", :vcr => true do + describe "it handles errors from forgeapi.puppetlabs.com" do subject(:forge) { described_class.new } before do - forge.conn.builder.insert_before(Faraday::Adapter::NetHttp, VCR::Middleware::Faraday) + faraday_stubs.get('/v3/modules/dne-dne') { [404, {}, 'not found'] } end it "raises an error for a non-existant module" do expect { forge.versions('dne/dne') }.to raise_error(R10K::Error) end