From 1e2dad06f9babdd50dd74a99a9e04ea890df403c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 30 Jul 2014 13:55:02 +0300 Subject: [PATCH] Period validation --- app/helpers/epp/domains_helper.rb | 1 + app/models/domain.rb | 1 + db/migrate/20140730104916_add_period_to_domain.rb | 5 +++++ db/schema.rb | 3 ++- spec/fabricators/domain_fabricator.rb | 1 + spec/models/domain_spec.rb | 6 ++++++ 6 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20140730104916_add_period_to_domain.rb diff --git a/app/helpers/epp/domains_helper.rb b/app/helpers/epp/domains_helper.rb index b1a50e418..2dd4a10da 100644 --- a/app/helpers/epp/domains_helper.rb +++ b/app/helpers/epp/domains_helper.rb @@ -25,6 +25,7 @@ module Epp::DomainsHelper name: ph[:name], registrar_id: current_epp_user.registrar.try(:id), registered_at: Time.now, + period: ph[:period].to_i, valid_from: Date.today, valid_to: Date.today + ph[:period].to_i.years, auth_info: ph[:authInfo][:pw] diff --git a/app/models/domain.rb b/app/models/domain.rb index 5a7d97391..6c2ab0857 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -10,6 +10,7 @@ class Domain < ActiveRecord::Base validates :name, domain_name: true, uniqueness: { message: I18n.t('errors.messages.epp_domain_taken') } validates :name_puny, domain_name: true + validates :period, numericality: { only_integer: true, greater_than: 0, less_than: 100 } def name=(value) value.strip! diff --git a/db/migrate/20140730104916_add_period_to_domain.rb b/db/migrate/20140730104916_add_period_to_domain.rb new file mode 100644 index 000000000..4c6602464 --- /dev/null +++ b/db/migrate/20140730104916_add_period_to_domain.rb @@ -0,0 +1,5 @@ +class AddPeriodToDomain < ActiveRecord::Migration + def change + add_column :domains, :period, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 3bf6b169e..e35a09e1d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140730082532) do +ActiveRecord::Schema.define(version: 20140730104916) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -63,6 +63,7 @@ ActiveRecord::Schema.define(version: 20140730082532) do t.datetime "updated_at" t.string "name_dirty" t.string "name_puny" + t.integer "period" end create_table "epp_sessions", force: true do |t| diff --git a/spec/fabricators/domain_fabricator.rb b/spec/fabricators/domain_fabricator.rb index 7e1e244ba..1781e97c2 100644 --- a/spec/fabricators/domain_fabricator.rb +++ b/spec/fabricators/domain_fabricator.rb @@ -1,3 +1,4 @@ Fabricator(:domain) do name { "#{Faker::Internet.domain_word}.ee" } + period 1 end diff --git a/spec/models/domain_spec.rb b/spec/models/domain_spec.rb index f24f68d0b..f44e08608 100644 --- a/spec/models/domain_spec.rb +++ b/spec/models/domain_spec.rb @@ -40,4 +40,10 @@ describe Domain do Fabricate(:reserved_domain) expect(Fabricate.build(:domain, name: '1162.ee').valid?).to be false end + + it 'validates period' do + expect(Fabricate.build(:domain, period: 0).valid?).to be false + expect(Fabricate.build(:domain, period: 120).valid?).to be false + expect(Fabricate.build(:domain, period: 99).valid?).to be true + end end