describe Moip2::Response do

  let(:parsed_json) { { "id" => "ORD-SOMETHING" } }

  let(:response) { described_class.new(nil, parsed_json) }

  describe "method delegation" do

    it "delegates []" do
      expect(response["id"]).to eq("ORD-SOMETHING")
    end

    it "delegates attribute to property accessor" do
      expect(response.id).to eq("ORD-SOMETHING")
    end

  end

  describe "#success?" do

    let(:success_response) do
      double("Success Response").tap do |success_response|
        allow(success_response).to receive(:code).and_return(200)
      end
    end

    let(:response) { described_class.new(success_response, parsed_json) }

    it "returns true when response code == 2xx" do
      expect(response).to be_success
    end

  end

  describe "#client_error?" do

    let(:error_response) do
      double("Error Response").tap do |error_response|
        allow(error_response).to receive(:code).and_return(400)
      end
    end

    let(:response) { described_class.new(error_response, {}) }

    it "returns false when response code == 4xx" do
      expect(response).to be_client_error
    end

  end

end
