diff options
Diffstat (limited to 'spec/unit/knife/core/ui_spec.rb')
-rw-r--r-- | spec/unit/knife/core/ui_spec.rb | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/spec/unit/knife/core/ui_spec.rb b/spec/unit/knife/core/ui_spec.rb index 38c72161e5..38614f44d9 100644 --- a/spec/unit/knife/core/ui_spec.rb +++ b/spec/unit/knife/core/ui_spec.rb @@ -34,16 +34,24 @@ describe Chef::Knife::UI do Chef::Config[:treat_deprecation_warnings_as_errors] = false end + class TestObject < OpenStruct + def self.from_hash(hsh) + new(hsh) + end + end + describe "edit" do ruby_for_json = { "foo" => "bar" } + ruby_from_json = TestObject.from_hash(ruby_for_json) json_from_ruby = "{\n \"foo\": \"bar\"\n}" json_from_editor = "{\n \"bar\": \"foo\"\n}" - ruby_from_editor = { "bar" => "foo" } + ruby_from_editor = TestObject.from_hash({ "bar" => "foo" }) my_editor = "veeeye" temp_path = "/tmp/bar/baz" - let(:subject) { @ui.edit_data(ruby_for_json, parse_output) } + let(:subject) { @ui.edit_data(ruby_for_json, parse_output, object_class: klass) } let(:parse_output) { false } + let(:klass) { nil } context "when editing is disabled" do before do @@ -57,17 +65,18 @@ describe Chef::Knife::UI do end context "when parse_output is true" do let(:parse_output) { true } + let(:klass) { TestObject } it "returns a ruby object" do - expect(subject).to eql(ruby_for_json) + expect(subject).to eql(ruby_from_json) end - - it "gives a deprecation error" do - Chef::Config[:treat_deprecation_warnings_as_errors] = true - expect { subject }.to raise_error Chef::Exceptions::DeprecatedFeatureError, - /Auto inflation of JSON data is deprecated./ + context "but no object class is provided" do + let(:klass) { nil } + it "raises an error" do + expect { subject }.to raise_error ArgumentError, + /Please pass in the object class to hydrate or use #edit_hash/ + end end end - end context "when editing is enabled" do @@ -94,6 +103,7 @@ describe Chef::Knife::UI do end context "when parse_output is true" do let(:parse_output) { true } + let(:klass) { TestObject } it "returns an edited ruby object" do expect(subject).to eql(ruby_from_editor) end @@ -145,6 +155,7 @@ describe Chef::Knife::UI do context "when parse_output is true" do let(:parse_output) { true } + let(:klass) { TestObject } it "returns an edited ruby object" do expect(subject).to eql(ruby_from_editor) end |