diff --git a/lib/taste_tester/state.rb b/lib/taste_tester/state.rb index 5b3dcc51..496694e2 100644 --- a/lib/taste_tester/state.rb +++ b/lib/taste_tester/state.rb @@ -145,12 +145,9 @@ def merge(vals) state = {} end state.merge!(vals) - ff = File.open( - TasteTester::Config.ref_file, - 'w', - ) - ff.write(state.to_json) - ff.close + File.open(TasteTester::Config.ref_file, 'w') do |ff| + ff.write(state.to_json) + end rescue StandardError => e logger.error('Unable to write the reffile') logger.debug(e) diff --git a/spec/taste-tester_spec.rb b/spec/taste-tester_spec.rb new file mode 100644 index 00000000..c01f8c40 --- /dev/null +++ b/spec/taste-tester_spec.rb @@ -0,0 +1,23 @@ +require "spec_helper" +require 'taste_tester/state' + +describe TasteTester::State do + + it "should serialize changes correctly" do + # initializing a state object creates a directory + # so let's pretend it already exists. + allow(File).to receive(:directory?).and_return(true) + + # original state file says ssl -> true + allow(File).to receive(:read).and_return('{"ssl": true}') + @s = TasteTester::State.new + + expect(@s.ssl).to eq(true) + + @buffer = StringIO.new() + allow(File).to receive(:open).and_yield(@buffer) + @s.ssl = false + expect(@buffer.string).to eq('{"ssl":false}') + end + +end