module Duracloud RSpec.describe Space do describe "listings" do let(:body) { <<-EOS EOS } before { stub_request(:get, "https://example.com/durastore/spaces") .to_return(body: body) } describe ".all" do specify { expect(Space.all.map(&:id)).to eq(["space1", "space2"]) } end describe ".ids" do specify { expect(Space.ids).to eq(["space1", "space2"]) } end end describe ".create" do describe "invalid space ID" do before { stub_request(:put, "https://example.com/durastore/INVALID") .to_return(status: 400) } specify { expect { Space.create("INVALID") }.to raise_error(BadRequestError) } end describe "valid space ID" do subject { Space.create("valid") } before { stub_request(:put, "https://example.com/durastore/valid") } it { is_expected.to be_a(Space) } its(:space_id) { is_expected.to eq("valid") } end end describe ".find" do let(:url) { "https://example.com/durastore/foo" } subject { Space.find("foo") } describe "when found" do before { stub_request(:head, url) } it { is_expected.to be_a(Space) } its(:space_id) { is_expected.to eq("foo") } end describe "when not found" do before { stub_request(:head, url).to_return(status: 404) } specify { expect { subject }.to raise_error(NotFoundError) } end end describe ".exist?" do let(:url) { "https://example.com/durastore/foo" } subject { Space.exist?("foo") } describe "when found" do before { stub_request(:head, url) } it { is_expected.to be true } end describe "when not found" do before { stub_request(:head, url).to_return(status: 404) } it { is_expected.to be false } end end describe "#save" describe "#delete" describe "#acls" describe "contents" do let(:body) { <<-EOS foo1 foo2 foo3 EOS } let(:url) { "https://example.com/durastore/foo" } before { stub_request(:head, url) .to_return(headers: { 'x-dura-meta-space-count'=>'3', 'x-dura-meta-space-created'=>'2016-04-05T17:59:11' }) stub_request(:get, url).to_return(body: body) } describe ".content_ids", pending: "Correcting the stub request" do subject { Space.content_ids("foo") } its(:to_a) { is_expected.to eq(["foo1", "foo2", "foo3"]) } end describe "#content_ids" do subject { Space.find("foo") } specify { pending "Correcting the stub request" expect(subject.content_ids.to_a).to eq(["foo1", "foo2", "foo3"]) } end describe ".items" describe "#items" describe ".count" describe "#count" end describe ".audit_log" describe "#audit_log" describe ".bit_integrity_report" describe "#bit_integrity_report" describe ".manifest" describe "#manifest" end end