From 547b7afc6bbd459970c24b8f13ddf280cafa1b7d Mon Sep 17 00:00:00 2001 From: rgarcia Date: Wed, 9 Sep 2015 23:56:02 +0200 Subject: [PATCH 1/2] stores failed Census API calls [#277] --- app/models/failed_census_call.rb | 3 +++ app/models/verification/residence.rb | 11 +++++++++++ .../20150909211203_create_failed_census_calls.rb | 13 +++++++++++++ db/schema.rb | 13 +++++++++++++ spec/factories.rb | 4 ++++ spec/models/residence_spec.rb | 16 ++++++++++++++++ 6 files changed, 60 insertions(+) create mode 100644 app/models/failed_census_call.rb create mode 100644 db/migrate/20150909211203_create_failed_census_calls.rb diff --git a/app/models/failed_census_call.rb b/app/models/failed_census_call.rb new file mode 100644 index 000000000..80cad8918 --- /dev/null +++ b/app/models/failed_census_call.rb @@ -0,0 +1,3 @@ +class FailedCensusCall < ActiveRecord::Base + belongs_to :user +end diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index 1e2d7778c..6551f05dd 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -42,8 +42,19 @@ class Verification::Residence unless residency.valid? errors.add(:residence_in_madrid, false) user.update(residence_verification_tries: user.residence_verification_tries += 1) + store_failed_attempt end self.date_of_birth = string_to_date(date_of_birth) end + def store_failed_attempt + data = { user: user, + document_number: document_number, + document_type: document_type, + date_of_birth: date_of_birth, + postal_code: postal_code } + + FailedCensusCall.create(data) + end + end diff --git a/db/migrate/20150909211203_create_failed_census_calls.rb b/db/migrate/20150909211203_create_failed_census_calls.rb new file mode 100644 index 000000000..0850f68ea --- /dev/null +++ b/db/migrate/20150909211203_create_failed_census_calls.rb @@ -0,0 +1,13 @@ +class CreateFailedCensusCalls < ActiveRecord::Migration + def change + create_table :failed_census_calls do |t| + t.belongs_to :user, index: true, foreign_key: true + t.string :document_number + t.string :document_type + t.date :date_of_birth + t.string :postal_code + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index ef952af3b..21a28d92d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -129,6 +129,18 @@ ActiveRecord::Schema.define(version: 20150910092713) do add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree + create_table "failed_census_calls", force: :cascade do |t| + t.integer "user_id" + t.string "document_number" + t.string "document_type" + t.date "date_of_birth" + t.string "postal_code" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "failed_census_calls", ["user_id"], name: "index_failed_census_calls_on_user_id", using: :btree + create_table "flags", force: :cascade do |t| t.integer "user_id" t.string "flaggable_type" @@ -302,6 +314,7 @@ ActiveRecord::Schema.define(version: 20150910092713) do add_index "votes", ["voter_id", "voter_type", "vote_scope"], name: "index_votes_on_voter_id_and_voter_type_and_vote_scope", using: :btree add_foreign_key "administrators", "users" + add_foreign_key "failed_census_calls", "users" add_foreign_key "flags", "users" add_foreign_key "identities", "users" add_foreign_key "moderators", "users" diff --git a/spec/factories.rb b/spec/factories.rb index f779f2e32..211520aec 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -28,6 +28,10 @@ FactoryGirl.define do date_of_birth Date.new(1980, 12, 31) postal_code "28013" terms_of_service '1' + + trait :invalid do + postal_code "12345" + end end factory :verification_sms, class: Verification::Sms do diff --git a/spec/models/residence_spec.rb b/spec/models/residence_spec.rb index 14892ea5d..177e8f20d 100644 --- a/spec/models/residence_spec.rb +++ b/spec/models/residence_spec.rb @@ -76,4 +76,20 @@ describe Verification::Residence do end end + describe "Failed census call" do + it "stores failed census API calls" do + residence = build(:verification_residence, :invalid) + residence.save + + expect(FailedCensusCall.count).to eq(1) + expect(FailedCensusCall.first).to have_attributes({ + user_id: residence.user.id, + document_number: "12345678Z", + document_type: "1", + date_of_birth: Date.new(1980, 12, 31), + postal_code: "12345" + }) + end + end + end \ No newline at end of file From 664852ce4e83539a013b771078c7fbb6a204df45 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Thu, 10 Sep 2015 20:16:49 +0200 Subject: [PATCH 2/2] refactors storing of failed attempt [#277] --- app/models/verification/residence.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/models/verification/residence.rb b/app/models/verification/residence.rb index 6551f05dd..e65ecf584 100644 --- a/app/models/verification/residence.rb +++ b/app/models/verification/residence.rb @@ -48,13 +48,13 @@ class Verification::Residence end def store_failed_attempt - data = { user: user, - document_number: document_number, - document_type: document_type, - date_of_birth: date_of_birth, - postal_code: postal_code } - - FailedCensusCall.create(data) + FailedCensusCall.create({ + user: user, + document_number: document_number, + document_type: document_type, + date_of_birth: date_of_birth, + postal_code: postal_code + }) end end