[ruby] Make sure super is always called for ApiError class. (#4168)

* [ruby] Make sure super is always called for ApiError class.

* Add test for Petstore::ApiError
This commit is contained in:
Chakrit Wichian 2016-11-11 16:39:45 +07:00 committed by wing328
parent 98a26c3922
commit f6a02f4339
3 changed files with 29 additions and 10 deletions

View File

@ -13,12 +13,14 @@ module {{moduleName}}
# ApiError.new(:code => 404, :message => "Not Found")
def initialize(arg = nil)
if arg.is_a? Hash
if arg.key?(:message) || arg.key?('message')
super(arg[:message] || arg['message'])
else
super arg
end
arg.each do |k, v|
if k.to_s == 'message'
super v
else
instance_variable_set "@#{k}", v
end
instance_variable_set "@#{k}", v
end
else
super arg

View File

@ -32,12 +32,14 @@ module Petstore
# ApiError.new(:code => 404, :message => "Not Found")
def initialize(arg = nil)
if arg.is_a? Hash
if arg.key?(:message) || arg.key?('message')
super(arg[:message] || arg['message'])
else
super arg
end
arg.each do |k, v|
if k.to_s == 'message'
super v
else
instance_variable_set "@#{k}", v
end
instance_variable_set "@#{k}", v
end
else
super arg

View File

@ -0,0 +1,15 @@
require File.dirname(__FILE__) + '/spec_helper'
describe Petstore::ApiClient do
describe '#initialize' do
it "should save the message if one is given" do
err = Petstore::ApiError.new(message: "Hello")
expect(err.message).to eq("Hello")
end
it "should save the hash as message if no message is given" do
err = Petstore::ApiError.new(code: 500, response_body: "server error")
expect(err.message).to eq("{:code=>500, :response_body=>\"server error\"}")
end
end
end