From 12c00a714dcd6461eb02b380330bf14e036826aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Wed, 5 Apr 2017 11:31:56 +0200 Subject: [PATCH] adds demographic info to signature users --- app/models/signature.rb | 20 +++++++++++++++----- spec/models/signature_spec.rb | 4 ++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/models/signature.rb b/app/models/signature.rb index 06ade968c..ece75773a 100644 --- a/app/models/signature.rb +++ b/app/models/signature.rb @@ -26,7 +26,7 @@ class Signature < ActiveRecord::Base def assign_vote if user_exists? assign_vote_to_user - else + elsif in_census? create_user assign_vote_to_user end @@ -55,7 +55,10 @@ class Signature < ActiveRecord::Base erased_at: Time.now, password: random_password, terms_of_service: '1', - email: nil + email: nil, + date_of_birth: @census_api_response.date_of_birth, + gender: @census_api_response.gender, + geozone: Geozone.where(census_code: @census_api_response.district_code).first } User.create!(user_params) end @@ -70,10 +73,17 @@ class Signature < ActiveRecord::Base end def in_census? - response = document_types.detect do |document_type| - CensusApi.new.call(document_type, document_number).valid? + document_types.detect do |document_type| + response = CensusApi.new.call(document_type, document_number) + if response.valid? + @census_api_response = response + true + else + false + end end - response.present? + + @census_api_response.present? end def set_user diff --git a/spec/models/signature_spec.rb b/spec/models/signature_spec.rb index 8bb090614..f1c81da19 100644 --- a/spec/models/signature_spec.rb +++ b/spec/models/signature_spec.rb @@ -118,6 +118,7 @@ describe Signature do describe "inexistent user" do it "creates a user with that document number" do + create(:geozone, census_code: "01") signature = create(:signature, document_number: "12345678Z") proposal = signature.signable @@ -128,6 +129,9 @@ describe Signature do expect(user.created_from_signature).to eq(true) expect(user.verified_at).to be expect(user.erased_at).to be + expect(user.geozone).to be + expect(user.gender).to be + expect(user.date_of_birth).to be end it "assign the vote to newly created user" do