From 3d2636be71d45e261829946418b0ddca5dd6bcb7 Mon Sep 17 00:00:00 2001 From: Andrew Tribone Date: Mon, 11 Sep 2017 21:41:56 +0000 Subject: [PATCH] allow model to have attribute that is the same as its name --- .gitignore | 2 ++ .pryrc | 4 ++++ her.gemspec | 4 ++++ lib/her/model/parse.rb | 3 ++- spec/model/parse_spec.rb | 22 ++++++++++++++++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 .pryrc diff --git a/.gitignore b/.gitignore index f72c9df9..6f1be5d9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /pkg /tmp /coverage +.bundle +/vendor diff --git a/.pryrc b/.pryrc new file mode 100644 index 00000000..27b0c1e4 --- /dev/null +++ b/.pryrc @@ -0,0 +1,4 @@ +Pry.commands.alias_command 'c', 'continue' +Pry.commands.alias_command 's', 'step' +Pry.commands.alias_command 'n', 'next' +Pry.commands.alias_command 'f', 'finish' diff --git a/her.gemspec b/her.gemspec index 3c582bb0..04e7efe7 100644 --- a/her.gemspec +++ b/her.gemspec @@ -20,6 +20,10 @@ Gem::Specification.new do |s| s.add_development_dependency "rake", "~> 10.0" s.add_development_dependency "rspec", "~> 3.5" s.add_development_dependency "json", "~> 1.8" + s.add_development_dependency "pry", "~> 0.10" + s.add_development_dependency "pry-byebug", "~> 3.4" + s.add_development_dependency "pry-remote", "~> 0.1" + s.add_development_dependency "pry-stack_explorer", "~> 0.4" s.add_runtime_dependency "activemodel", ">= 3.0.0", "<= 6.0.0" s.add_runtime_dependency "activesupport", ">= 3.0.0", "<= 6.0.0" diff --git a/lib/her/model/parse.rb b/lib/her/model/parse.rb index 80ca84f5..9eee361e 100644 --- a/lib/her/model/parse.rb +++ b/lib/her/model/parse.rb @@ -135,7 +135,8 @@ def root_element(value = nil) # @private def root_element_included?(data) - data.keys.to_s.include? @_her_root_element.to_s + data.keys.include?(root_element) && + (data[root_element].is_a?(Hash) || data[root_element].is_a?(Array)) end # @private diff --git a/spec/model/parse_spec.rb b/spec/model/parse_spec.rb index 111d7204..266cd5b9 100644 --- a/spec/model/parse_spec.rb +++ b/spec/model/parse_spec.rb @@ -2,6 +2,28 @@ require File.join(File.dirname(__FILE__), "../spec_helper.rb") describe Her::Model::Parse do + context "when no root element not included" do + before do + Her::API.setup url: "https://api.example.com" do |builder| + builder.use Her::Middleware::FirstLevelParseJSON + builder.use Faraday::Request::UrlEncoded + end + + Her::API.default_api.connection.adapter :test do |stub| + stub.post("/users") { |env| [200, {}, { user: "foobar", id: 1, fullname: params(env)[:fullname] }.to_json] } + end + + spawn_model "Foo::User" + end + + + it "ignores root keys if not array or object" do + user = Foo::User.create(fullname: "barfoo") + expect(user.fullname).to eq "barfoo" + expect(user.user).to eq "foobar" + end + end + context "when include_root_in_json is set" do before do Her::API.setup url: "https://api.example.com" do |builder|