Initial commit
This commit is contained in:
60
spec/lib/duplicate_remover_spec.rb
Normal file
60
spec/lib/duplicate_remover_spec.rb
Normal file
@@ -0,0 +1,60 @@
|
||||
require 'rails_helper'
|
||||
require 'duplicate_remover'
|
||||
|
||||
describe DuplicateRemover do
|
||||
before(:all) do
|
||||
Temping.create :person do
|
||||
validates :name, uniqueness: true
|
||||
|
||||
with_columns do |t|
|
||||
t.string :name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
after(:all) do
|
||||
Temping.teardown
|
||||
end
|
||||
|
||||
context 'when record attribute is unique' do
|
||||
it 'does not update the record' do
|
||||
person = create_person("Jane")
|
||||
|
||||
DuplicateRemover.new(person, :name).perform!
|
||||
|
||||
expect(person.name).to eq("Jane")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when record attribute is a duplicate' do
|
||||
it 'updates the record with a unique name' do
|
||||
create_person("Jane")
|
||||
person = create_person("Jane")
|
||||
|
||||
DuplicateRemover.new(person, :name).perform!
|
||||
|
||||
expect(person.name).to eq("Jane (2)")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when record attribute is a duplicate multiple times' do
|
||||
it 'updates the record with a unique name' do
|
||||
create_person("Jane")
|
||||
create_person("Jane (2)")
|
||||
create_person("Jane (3)")
|
||||
person = create_person("Jane")
|
||||
|
||||
DuplicateRemover.new(person, :name).perform!
|
||||
|
||||
expect(person.name).to eq("Jane (4)")
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_person(name)
|
||||
Person.new(name: name) do |person|
|
||||
person.save(validate: false)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user