1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
# encoding: binary
RSpec.describe AMQ::Protocol::Error do
describe ".[]" do
it "looks up exception class by error code" do
# This only works if subclasses define VALUE constant
# Default case: no subclass with VALUE defined returns nil
expect { described_class[999999] }.to raise_error(/No such exception class/)
end
end
describe ".subclasses_with_values" do
it "returns subclasses that define VALUE constant" do
result = described_class.subclasses_with_values
expect(result).to be_an(Array)
end
end
describe "#initialize" do
it "uses default message when none provided" do
error = described_class.new
expect(error.message).to eq("AMQP error")
end
it "uses custom message when provided" do
error = described_class.new("Custom error")
expect(error.message).to eq("Custom error")
end
end
end
RSpec.describe AMQ::Protocol::FrameTypeError do
it "formats message with valid types" do
error = described_class.new([:method, :headers])
expect(error.message).to include("[:method, :headers]")
end
end
RSpec.describe AMQ::Protocol::EmptyResponseError do
it "has a default message" do
error = described_class.new
expect(error.message).to eq("Empty response received from the server.")
end
it "accepts custom message" do
error = described_class.new("Custom empty response")
expect(error.message).to eq("Custom empty response")
end
end
RSpec.describe AMQ::Protocol::BadResponseError do
it "formats message with argument, expected, and actual values" do
error = described_class.new("channel", 1, 2)
expect(error.message).to include("channel")
expect(error.message).to include("1")
expect(error.message).to include("2")
end
end
RSpec.describe AMQ::Protocol::SoftError do
it "is a subclass of Protocol::Error" do
expect(described_class.superclass).to eq(AMQ::Protocol::Error)
end
end
RSpec.describe AMQ::Protocol::HardError do
it "is a subclass of Protocol::Error" do
expect(described_class.superclass).to eq(AMQ::Protocol::Error)
end
end
|