From f6a02f43393ad239db75de097c592c33a9b636f3 Mon Sep 17 00:00:00 2001 From: Chakrit Wichian Date: Fri, 11 Nov 2016 16:39:45 +0700 Subject: [PATCH] [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 --- .../src/main/resources/ruby/api_error.mustache | 12 +++++++----- .../petstore/ruby/lib/petstore/api_error.rb | 12 +++++++----- .../client/petstore/ruby/spec/api_error_spec.rb | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 samples/client/petstore/ruby/spec/api_error_spec.rb diff --git a/modules/swagger-codegen/src/main/resources/ruby/api_error.mustache b/modules/swagger-codegen/src/main/resources/ruby/api_error.mustache index ddd8cda32f5..b3320779b36 100644 --- a/modules/swagger-codegen/src/main/resources/ruby/api_error.mustache +++ b/modules/swagger-codegen/src/main/resources/ruby/api_error.mustache @@ -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 diff --git a/samples/client/petstore/ruby/lib/petstore/api_error.rb b/samples/client/petstore/ruby/lib/petstore/api_error.rb index aaf331230d3..30b03841f57 100644 --- a/samples/client/petstore/ruby/lib/petstore/api_error.rb +++ b/samples/client/petstore/ruby/lib/petstore/api_error.rb @@ -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 diff --git a/samples/client/petstore/ruby/spec/api_error_spec.rb b/samples/client/petstore/ruby/spec/api_error_spec.rb new file mode 100644 index 00000000000..1ea0ecd6817 --- /dev/null +++ b/samples/client/petstore/ruby/spec/api_error_spec.rb @@ -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