From df84c1596b28d8f072ee71c9ba5a815a2c3e7308 Mon Sep 17 00:00:00 2001 From: Craig McNamara Date: Mon, 14 Dec 2015 11:59:09 -0800 Subject: [PATCH] Only obfuscate if the instance has the field in question. --- lib/polo/translator.rb | 5 +++-- spec/polo_spec.rb | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/polo/translator.rb b/lib/polo/translator.rb index 97a7700..7a0df49 100644 --- a/lib/polo/translator.rb +++ b/lib/polo/translator.rb @@ -38,8 +38,9 @@ def obfuscate!(instances, fields) next if intersection(instance.attributes.keys, fields).empty? fields.each do |field, strategy| - value = instance.attributes[field.to_s] || '' - instance.send("#{field}=", new_field_value(field, strategy, value)) + if value = instance.attributes[field.to_s] + instance.send("#{field}=", new_field_value(field, strategy, value)) + end end end end diff --git a/spec/polo_spec.rb b/spec/polo_spec.rb index c7ce43e..17c79b0 100644 --- a/spec/polo_spec.rb +++ b/spec/polo_spec.rb @@ -88,6 +88,20 @@ expect(inserts).to eq [ %q{INSERT INTO "chefs" ("id", "name", "email") VALUES (1, 'Netto', 'changeme')} ] end + + it 'only scrambles instances with the obfuscate field defined' do + Polo.configure do + obfuscate :name, + email: ->(e) { "#{e.split("@")[0]}_test@example.com" }, + title: ->(t) { t.chars.reverse!.join } + end + + exp = Polo.explore(AR::Chef, 1, :recipes) + + explore_statement = exp.join(';') + expect(explore_statement).to_not match('nettofarah@gmail.com') + expect(explore_statement).to_not match('Netto') + end end describe 'on_duplicate' do