reassigns erased user votes when returning user is verified
This commit is contained in:
@@ -26,6 +26,9 @@ class Verification::Residence
|
||||
|
||||
def save
|
||||
return false unless valid?
|
||||
|
||||
user.take_votes_if_erased_document(document_number, document_type)
|
||||
|
||||
user.update(document_number: document_number,
|
||||
document_type: document_type,
|
||||
geozone: self.geozone,
|
||||
@@ -40,7 +43,7 @@ class Verification::Residence
|
||||
end
|
||||
|
||||
def document_number_uniqueness
|
||||
errors.add(:document_number, I18n.t('errors.messages.taken')) if User.where(document_number: document_number).any?
|
||||
errors.add(:document_number, I18n.t('errors.messages.taken')) if User.active.where(document_number: document_number).any?
|
||||
end
|
||||
|
||||
def store_failed_attempt
|
||||
|
||||
@@ -22,6 +22,31 @@ feature 'Residence' do
|
||||
expect(page).to have_content 'Residence verified'
|
||||
end
|
||||
|
||||
scenario 'When trying to verify a deregistered account old votes are reassigned' do
|
||||
erased_user = create(:user, document_number: '12345678Z', document_type: '1', erased_at: Time.current)
|
||||
vote = create(:vote, voter: erased_user)
|
||||
new_user = create(:user)
|
||||
|
||||
login_as(new_user)
|
||||
|
||||
visit account_path
|
||||
click_link 'Verify my account'
|
||||
|
||||
fill_in 'residence_document_number', with: '12345678Z'
|
||||
select 'DNI', from: 'residence_document_type'
|
||||
select_date '31-December-1980', from: 'residence_date_of_birth'
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify residence'
|
||||
|
||||
expect(page).to have_content 'Residence verified'
|
||||
|
||||
expect(vote.reload.voter).to eq(new_user)
|
||||
expect(erased_user.reload.document_number).to be_blank
|
||||
expect(new_user.reload.document_number).to eq('12345678Z')
|
||||
end
|
||||
|
||||
scenario 'Error on verify' do
|
||||
user = create(:user)
|
||||
login_as(user)
|
||||
@@ -102,24 +127,4 @@ feature 'Residence' do
|
||||
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
|
||||
expect(current_path).to eq(account_path)
|
||||
end
|
||||
|
||||
scenario 'Error when trying to verify a deregistered account' do
|
||||
create(:user, document_number: '12345678Z', document_type: '1', erased_at: Time.current)
|
||||
|
||||
login_as(create(:user))
|
||||
|
||||
visit account_path
|
||||
click_link 'Verify my account'
|
||||
|
||||
fill_in 'residence_document_number', with: "12345678Z"
|
||||
select 'DNI', from: 'residence_document_type'
|
||||
select_date '31-December-1980', from: 'residence_date_of_birth'
|
||||
fill_in 'residence_postal_code', with: '28013'
|
||||
check 'residence_terms_of_service'
|
||||
|
||||
click_button 'Verify residence'
|
||||
|
||||
expect(page).to_not have_content 'Residence verified'
|
||||
expect(page).to have_content 'has already been taken'
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user