mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 12:47:29 +02:00
Change domains.delete_at
database column type to date, rename to
`delete_date` Closes #1125
This commit is contained in:
parent
ab9c5c45de
commit
cea834d5b7
31 changed files with 159 additions and 71 deletions
|
@ -20,6 +20,6 @@ module Concerns::Domain::Deletable
|
||||||
end
|
end
|
||||||
|
|
||||||
def deletion_deadline
|
def deletion_deadline
|
||||||
delete_at + 24.hours
|
delete_date + 24.hours
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -22,7 +22,7 @@ module Concerns::Domain::Expirable
|
||||||
def expirable?
|
def expirable?
|
||||||
return false if expire_time > Time.zone.now
|
return false if expire_time > Time.zone.now
|
||||||
|
|
||||||
if statuses.include?(DomainStatus::EXPIRED) && outzone_at.present? && delete_at.present?
|
if statuses.include?(DomainStatus::EXPIRED) && outzone_at.present? && delete_date.present?
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,16 +15,16 @@ module Concerns
|
||||||
|
|
||||||
def releasable_domains
|
def releasable_domains
|
||||||
if release_to_auction
|
if release_to_auction
|
||||||
where('(delete_at < ? OR force_delete_date <= ?)' \
|
where('(delete_date <= ? OR force_delete_date <= ?)' \
|
||||||
' AND ? != ALL(coalesce(statuses, array[]::varchar[]))',
|
' AND ? != ALL(coalesce(statuses, array[]::varchar[]))',
|
||||||
Time.zone.now,
|
Time.zone.today,
|
||||||
Time.zone.today,
|
Time.zone.today,
|
||||||
DomainStatus::SERVER_DELETE_PROHIBITED)
|
DomainStatus::SERVER_DELETE_PROHIBITED)
|
||||||
else
|
else
|
||||||
where('(delete_at < ? OR force_delete_date <= ?)' \
|
where('(delete_date <= ? OR force_delete_date <= ?)' \
|
||||||
' AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \
|
' AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \
|
||||||
' ? != ALL(COALESCE(statuses, array[]::varchar[]))',
|
' ? != ALL(COALESCE(statuses, array[]::varchar[]))',
|
||||||
Time.zone.now,
|
Time.zone.today,
|
||||||
Time.zone.today,
|
Time.zone.today,
|
||||||
DomainStatus::SERVER_DELETE_PROHIBITED,
|
DomainStatus::SERVER_DELETE_PROHIBITED,
|
||||||
DomainStatus::DELETE_CANDIDATE)
|
DomainStatus::DELETE_CANDIDATE)
|
||||||
|
|
|
@ -399,7 +399,7 @@ class Domain < ActiveRecord::Base
|
||||||
def cancel_pending_delete
|
def cancel_pending_delete
|
||||||
statuses.delete DomainStatus::PENDING_DELETE_CONFIRMATION
|
statuses.delete DomainStatus::PENDING_DELETE_CONFIRMATION
|
||||||
statuses.delete DomainStatus::PENDING_DELETE
|
statuses.delete DomainStatus::PENDING_DELETE
|
||||||
self.delete_at = nil
|
self.delete_date = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def pricelist(operation_category, period_i = nil, unit = nil)
|
def pricelist(operation_category, period_i = nil, unit = nil)
|
||||||
|
@ -459,7 +459,7 @@ class Domain < ActiveRecord::Base
|
||||||
|
|
||||||
def set_graceful_expired
|
def set_graceful_expired
|
||||||
self.outzone_at = expire_time + self.class.expire_warning_period
|
self.outzone_at = expire_time + self.class.expire_warning_period
|
||||||
self.delete_at = outzone_at + self.class.redemption_grace_period
|
self.delete_date = outzone_at + self.class.redemption_grace_period
|
||||||
self.statuses |= [DomainStatus::EXPIRED]
|
self.statuses |= [DomainStatus::EXPIRED]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -484,7 +484,7 @@ class Domain < ActiveRecord::Base
|
||||||
unless update.include? s
|
unless update.include? s
|
||||||
case s
|
case s
|
||||||
when DomainStatus::PENDING_DELETE
|
when DomainStatus::PENDING_DELETE
|
||||||
self.delete_at = nil
|
self.delete_date = nil
|
||||||
when DomainStatus::SERVER_MANUAL_INZONE # removal causes server hold to set
|
when DomainStatus::SERVER_MANUAL_INZONE # removal causes server hold to set
|
||||||
self.outzone_at = Time.zone.now if force_delete_scheduled?
|
self.outzone_at = Time.zone.now if force_delete_scheduled?
|
||||||
when DomainStatus::DomainStatus::EXPIRED # removal causes server hold to set
|
when DomainStatus::DomainStatus::EXPIRED # removal causes server hold to set
|
||||||
|
|
|
@ -549,7 +549,7 @@ class Epp::Domain < Domain
|
||||||
msg: I18n.t(:object_status_prohibits_operation)
|
msg: I18n.t(:object_status_prohibits_operation)
|
||||||
} unless pending_deletable?
|
} unless pending_deletable?
|
||||||
|
|
||||||
self.delete_at = (Time.zone.now + (Setting.redemption_grace_period.days + 1.day)).utc.beginning_of_day
|
self.delete_date = Time.zone.today + Setting.redemption_grace_period.days + 1.day
|
||||||
set_pending_delete
|
set_pending_delete
|
||||||
set_server_hold if server_holdable?
|
set_server_hold if server_holdable?
|
||||||
save(validate: false)
|
save(validate: false)
|
||||||
|
@ -576,7 +576,7 @@ class Epp::Domain < Domain
|
||||||
|
|
||||||
self.expire_time = renewed_expire_time
|
self.expire_time = renewed_expire_time
|
||||||
self.outzone_at = nil
|
self.outzone_at = nil
|
||||||
self.delete_at = nil
|
self.delete_date = nil
|
||||||
self.period = period
|
self.period = period
|
||||||
self.period_unit = unit
|
self.period_unit = unit
|
||||||
|
|
||||||
|
|
|
@ -40,8 +40,7 @@ class WhoisRecord < ActiveRecord::Base
|
||||||
h[:changed] = domain.updated_at.try(:to_s, :iso8601)
|
h[:changed] = domain.updated_at.try(:to_s, :iso8601)
|
||||||
h[:expire] = domain.valid_to.to_date.to_s
|
h[:expire] = domain.valid_to.to_date.to_s
|
||||||
h[:outzone] = domain.outzone_at.try(:to_date).try(:to_s)
|
h[:outzone] = domain.outzone_at.try(:to_date).try(:to_s)
|
||||||
h[:delete] = [domain.delete_at, domain.force_delete_date].compact.min.try(:to_date)
|
h[:delete] = [domain.delete_date, domain.force_delete_date].compact.min.try(:to_s)
|
||||||
.try(:to_s)
|
|
||||||
|
|
||||||
h[:registrant] = registrant.name
|
h[:registrant] = registrant.name
|
||||||
h[:registrant_kind] = registrant.kind
|
h[:registrant_kind] = registrant.kind
|
||||||
|
|
|
@ -35,7 +35,7 @@ class DomainPresenter
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_date
|
def delete_date
|
||||||
view.l(domain.delete_at, format: :date) if domain.delete_at
|
view.l(domain.delete_date) if domain.delete_date
|
||||||
end
|
end
|
||||||
|
|
||||||
def force_delete_date
|
def force_delete_date
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
<dt><%= t('.outzone_time') %></dt>
|
<dt><%= t('.outzone_time') %></dt>
|
||||||
<dd><%= l(@domain.outzone_at) %></dd>
|
<dd><%= l(@domain.outzone_at) %></dd>
|
||||||
|
|
||||||
<dt><%= t('.delete_time') %></dt>
|
<dt><%= Domain.human_attribute_name :delete_date %></dt>
|
||||||
<dd><%= l(@domain.delete_at) %></dd>
|
<dd><%= l @domain.delete_date %></dd>
|
||||||
|
|
||||||
<dt><%= Domain.human_attribute_name :force_delete_date %></dt>
|
<dt><%= Domain.human_attribute_name :force_delete_date %></dt>
|
||||||
<dd><%= l @domain.force_delete_date %></dd>
|
<dd><%= l @domain.force_delete_date %></dd>
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
<dt><%= Domain.human_attribute_name :outzone_at %></dt>
|
<dt><%= Domain.human_attribute_name :outzone_at %></dt>
|
||||||
<dd><%= l(@domain.outzone_at) %></dd>
|
<dd><%= l(@domain.outzone_at) %></dd>
|
||||||
|
|
||||||
<dt><%= Domain.human_attribute_name :delete_at %></dt>
|
<dt><%= Domain.human_attribute_name :delete_date %></dt>
|
||||||
<dd><%= l(@domain.delete_at) %></dd>
|
<dd><%= l @domain.delete_date %></dd>
|
||||||
|
|
||||||
<dt><%= Domain.human_attribute_name :force_delete_date %></dt>
|
<dt><%= Domain.human_attribute_name :force_delete_date %></dt>
|
||||||
<dd><%= l @domain.force_delete_date %></dd>
|
<dd><%= l @domain.force_delete_date %></dd>
|
||||||
|
|
|
@ -51,7 +51,6 @@ en:
|
||||||
partials:
|
partials:
|
||||||
general:
|
general:
|
||||||
outzone_time: Outzone time
|
outzone_time: Outzone time
|
||||||
delete_time: Delete time
|
|
||||||
locked_by_registrant_at: Registry lock time
|
locked_by_registrant_at: Registry lock time
|
||||||
|
|
||||||
admin_contacts:
|
admin_contacts:
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class ChangeDomainsDeleteAtToDate < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
change_column :domains, :delete_at, :date
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class RenameDomainsDeleteAtToDeleteDate < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
rename_column :domains, :delete_at, :delete_date
|
||||||
|
end
|
||||||
|
end
|
|
@ -932,7 +932,7 @@ CREATE TABLE public.domains (
|
||||||
legacy_registrar_id integer,
|
legacy_registrar_id integer,
|
||||||
legacy_registrant_id integer,
|
legacy_registrant_id integer,
|
||||||
outzone_at timestamp without time zone,
|
outzone_at timestamp without time zone,
|
||||||
delete_at timestamp without time zone,
|
delete_date date,
|
||||||
registrant_verification_asked_at timestamp without time zone,
|
registrant_verification_asked_at timestamp without time zone,
|
||||||
registrant_verification_token character varying,
|
registrant_verification_token character varying,
|
||||||
pending_json jsonb,
|
pending_json jsonb,
|
||||||
|
@ -3540,10 +3540,10 @@ CREATE INDEX index_domain_transfers_on_domain_id ON public.domain_transfers USIN
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: index_domains_on_delete_at; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
-- Name: index_domains_on_delete_date; Type: INDEX; Schema: public; Owner: -; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE INDEX index_domains_on_delete_at ON public.domains USING btree (delete_at);
|
CREATE INDEX index_domains_on_delete_date ON public.domains USING btree (delete_date);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
|
@ -4939,5 +4939,9 @@ INSERT INTO schema_migrations (version) VALUES ('20190322152123');
|
||||||
|
|
||||||
INSERT INTO schema_migrations (version) VALUES ('20190322152529');
|
INSERT INTO schema_migrations (version) VALUES ('20190322152529');
|
||||||
|
|
||||||
|
INSERT INTO schema_migrations (version) VALUES ('20190328151516');
|
||||||
|
|
||||||
|
INSERT INTO schema_migrations (version) VALUES ('20190328151838');
|
||||||
|
|
||||||
INSERT INTO schema_migrations (version) VALUES ('20190415120246');
|
INSERT INTO schema_migrations (version) VALUES ('20190415120246');
|
||||||
|
|
||||||
|
|
|
@ -10690,7 +10690,7 @@ RESPONSE:
|
||||||
</epp>
|
</epp>
|
||||||
```
|
```
|
||||||
|
|
||||||
### EPP Domain with valid domain renews a domain when outzone_at or delete_at is nil for some reason
|
### EPP Domain with valid domain renews a domain when outzone_at or delete_date is nil for some reason
|
||||||
|
|
||||||
REQUEST:
|
REQUEST:
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id":null,
|
"legacy_registrar_id":null,
|
||||||
"legacy_registrant_id":null,
|
"legacy_registrant_id":null,
|
||||||
"outzone_at":"2016-09-24T09:11:14.861Z",
|
"outzone_at":"2016-09-24T09:11:14.861Z",
|
||||||
"delete_at":"2016-10-24T09:11:14.861Z",
|
"delete_date":"2016-10-24",
|
||||||
"registrant_verification_asked_at":null,
|
"registrant_verification_asked_at":null,
|
||||||
"registrant_verification_token":null,
|
"registrant_verification_token":null,
|
||||||
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
||||||
|
@ -179,7 +179,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id":null,
|
"legacy_registrar_id":null,
|
||||||
"legacy_registrant_id":null,
|
"legacy_registrant_id":null,
|
||||||
"outzone_at":"2016-09-24T09:11:14.861Z",
|
"outzone_at":"2016-09-24T09:11:14.861Z",
|
||||||
"delete_at":"2016-10-24T09:11:14.861Z",
|
"delete_date":"2016-10-24",
|
||||||
"registrant_verification_asked_at":null,
|
"registrant_verification_asked_at":null,
|
||||||
"registrant_verification_token":null,
|
"registrant_verification_token":null,
|
||||||
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
||||||
|
@ -286,7 +286,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id":null,
|
"legacy_registrar_id":null,
|
||||||
"legacy_registrant_id":null,
|
"legacy_registrant_id":null,
|
||||||
"outzone_at":"2016-09-24T09:11:14.861Z",
|
"outzone_at":"2016-09-24T09:11:14.861Z",
|
||||||
"delete_at":"2016-10-24T09:11:14.861Z",
|
"delete_date":"2016-10-24",
|
||||||
"registrant_verification_asked_at":null,
|
"registrant_verification_asked_at":null,
|
||||||
"registrant_verification_token":null,
|
"registrant_verification_token":null,
|
||||||
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
||||||
|
|
|
@ -64,7 +64,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id":null,
|
"legacy_registrar_id":null,
|
||||||
"legacy_registrant_id":null,
|
"legacy_registrant_id":null,
|
||||||
"outzone_at":"2016-09-24T09:11:14.861Z",
|
"outzone_at":"2016-09-24T09:11:14.861Z",
|
||||||
"delete_at":"2016-10-24T09:11:14.861Z",
|
"delete_date":"2016-10-24",
|
||||||
"registrant_verification_asked_at":null,
|
"registrant_verification_asked_at":null,
|
||||||
"registrant_verification_token":null,
|
"registrant_verification_token":null,
|
||||||
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
"locked_by_registrant_at":"2015-09-09T09:11:14.861Z",
|
||||||
|
@ -208,7 +208,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id":null,
|
"legacy_registrar_id":null,
|
||||||
"legacy_registrant_id":null,
|
"legacy_registrant_id":null,
|
||||||
"outzone_at":"2016-09-24T09:11:14.861Z",
|
"outzone_at":"2016-09-24T09:11:14.861Z",
|
||||||
"delete_at":"2016-10-24T09:11:14.861Z",
|
"delete_date":"2016-10-24",
|
||||||
"registrant_verification_asked_at":null,
|
"registrant_verification_asked_at":null,
|
||||||
"registrant_verification_token":null,
|
"registrant_verification_token":null,
|
||||||
"locked_by_registrant_at":null,
|
"locked_by_registrant_at":null,
|
||||||
|
|
|
@ -52,7 +52,7 @@ Content-Type: application/json
|
||||||
"legacy_registrar_id": null,
|
"legacy_registrar_id": null,
|
||||||
"legacy_registrant_id": null,
|
"legacy_registrant_id": null,
|
||||||
"outzone_at": "2016-09-24T09:11:14.861Z",
|
"outzone_at": "2016-09-24T09:11:14.861Z",
|
||||||
"delete_at": "2016-10-24T09:11:14.861Z",
|
"delete_date": "2016-10-24",
|
||||||
"registrant_verification_asked_at": null,
|
"registrant_verification_asked_at": null,
|
||||||
"registrant_verification_token": null,
|
"registrant_verification_token": null,
|
||||||
"pending_json": {
|
"pending_json": {
|
||||||
|
|
|
@ -36,7 +36,7 @@ module Serializers
|
||||||
legacy_registrar_id: domain.legacy_registrar_id,
|
legacy_registrar_id: domain.legacy_registrar_id,
|
||||||
legacy_registrant_id: domain.legacy_registrant_id,
|
legacy_registrant_id: domain.legacy_registrant_id,
|
||||||
outzone_at: domain.outzone_at,
|
outzone_at: domain.outzone_at,
|
||||||
delete_at: domain.delete_at,
|
delete_date: domain.delete_date,
|
||||||
registrant_verification_asked_at: domain.registrant_verification_asked_at,
|
registrant_verification_asked_at: domain.registrant_verification_asked_at,
|
||||||
registrant_verification_token: domain.registrant_verification_token,
|
registrant_verification_token: domain.registrant_verification_token,
|
||||||
pending_json: domain.pending_json,
|
pending_json: domain.pending_json,
|
||||||
|
|
16
lib/tasks/data_migrations/convert_domain_delete_date.rake
Normal file
16
lib/tasks/data_migrations/convert_domain_delete_date.rake
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
namespace :data_migrations do
|
||||||
|
task convert_domain_delete_date: :environment do
|
||||||
|
processed_domain_count = 0
|
||||||
|
|
||||||
|
Domain.transaction do
|
||||||
|
Domain.find_each do |domain|
|
||||||
|
next unless domain.delete_date
|
||||||
|
|
||||||
|
domain.update_columns(delete_date: domain.delete_date + 1.day)
|
||||||
|
processed_domain_count += 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
puts "Domains processed: #{processed_domain_count}"
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,6 +1,6 @@
|
||||||
namespace :domains do
|
namespace :domains do
|
||||||
desc <<~TEXT.gsub("\n", "\s")
|
desc <<~TEXT.gsub("\n", "\s")
|
||||||
Releases domains with past `delete_at` by either sending them to the auction or discarding,
|
Releases domains with past `delete_date` by either sending them to the auction or discarding,
|
||||||
depending on `release_domains_to_auction` setting
|
depending on `release_domains_to_auction` setting
|
||||||
TEXT
|
TEXT
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ RSpec.describe DomainCron do
|
||||||
old_valid_to = Time.zone.now - 10.days
|
old_valid_to = Time.zone.now - 10.days
|
||||||
@domain.valid_to = old_valid_to
|
@domain.valid_to = old_valid_to
|
||||||
@domain.statuses = [DomainStatus::EXPIRED]
|
@domain.statuses = [DomainStatus::EXPIRED]
|
||||||
@domain.outzone_at, @domain.delete_at = nil, nil
|
@domain.outzone_at, @domain.delete_date = nil, nil
|
||||||
@domain.save
|
@domain.save
|
||||||
|
|
||||||
described_class.start_expire_period
|
described_class.start_expire_period
|
||||||
|
|
|
@ -132,7 +132,7 @@ RSpec.describe Domain do
|
||||||
old_valid_to = Time.zone.now - 10.days
|
old_valid_to = Time.zone.now - 10.days
|
||||||
@domain.valid_to = old_valid_to
|
@domain.valid_to = old_valid_to
|
||||||
@domain.statuses = [DomainStatus::EXPIRED]
|
@domain.statuses = [DomainStatus::EXPIRED]
|
||||||
@domain.outzone_at, @domain.delete_at = nil, nil
|
@domain.outzone_at, @domain.delete_date = nil, nil
|
||||||
@domain.save
|
@domain.save
|
||||||
|
|
||||||
DomainCron.start_expire_period
|
DomainCron.start_expire_period
|
||||||
|
@ -711,8 +711,8 @@ RSpec.describe Domain do
|
||||||
expect(domain.outzone_at).to eq(Time.zone.parse('06.07.2010 10:30'))
|
expect(domain.outzone_at).to eq(Time.zone.parse('06.07.2010 10:30'))
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sets :delete_at to :outzone_at + redemption grace period' do
|
it 'sets :delete_date to :outzone_at + redemption grace period' do
|
||||||
expect(domain.delete_at).to eq(Time.zone.parse('08.07.2010 10:30'))
|
expect(domain.delete_date).to eq(Date.parse('08.07.2010'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -44,16 +44,16 @@ RSpec.describe DomainPresenter do
|
||||||
subject(:delete_date) { presenter.delete_date }
|
subject(:delete_date) { presenter.delete_date }
|
||||||
|
|
||||||
context 'when present' do
|
context 'when present' do
|
||||||
let(:domain) { instance_double(Domain, delete_at: '05.07.2010') }
|
let(:domain) { instance_double(Domain, delete_date: '05.07.2010') }
|
||||||
|
|
||||||
it 'returns localized date' do
|
it 'returns localized date' do
|
||||||
expect(view).to receive(:l).with('05.07.2010', format: :date).and_return('delete date')
|
expect(view).to receive(:l).with('05.07.2010').and_return('delete date')
|
||||||
expect(delete_date).to eq('delete date')
|
expect(delete_date).to eq('delete date')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when absent' do
|
context 'when absent' do
|
||||||
let(:domain) { instance_double(Domain, delete_at: nil) }
|
let(:domain) { instance_double(Domain, delete_date: nil) }
|
||||||
|
|
||||||
specify { expect(delete_date).to be_nil }
|
specify { expect(delete_date).to be_nil }
|
||||||
end
|
end
|
||||||
|
|
2
test/fixtures/domains.yml
vendored
2
test/fixtures/domains.yml
vendored
|
@ -7,7 +7,7 @@ shop:
|
||||||
registered_at: <%= Time.zone.parse('2010-07-04').to_s(:db) %>
|
registered_at: <%= Time.zone.parse('2010-07-04').to_s(:db) %>
|
||||||
valid_to: <%= Time.zone.parse('2010-07-05').to_s(:db) %>
|
valid_to: <%= Time.zone.parse('2010-07-05').to_s(:db) %>
|
||||||
outzone_at: <%= Time.zone.parse('2010-07-06').to_s(:db) %>
|
outzone_at: <%= Time.zone.parse('2010-07-06').to_s(:db) %>
|
||||||
delete_at: <%= Time.zone.parse('2010-07-07').to_s(:db) %>
|
delete_date: 2010-07-07
|
||||||
force_delete_date: 2010-07-08
|
force_delete_date: 2010-07-08
|
||||||
period: 1
|
period: 1
|
||||||
period_unit: m
|
period_unit: m
|
||||||
|
|
|
@ -72,7 +72,7 @@ class SerializersRegistrantApiDomainTest < ActiveSupport::TestCase
|
||||||
keys = %i[id name registrar registered_at valid_to created_at updated_at
|
keys = %i[id name registrar registered_at valid_to created_at updated_at
|
||||||
registrant tech_contacts admin_contacts transfer_code name_dirty name_puny period
|
registrant tech_contacts admin_contacts transfer_code name_dirty name_puny period
|
||||||
period_unit creator_str updator_str legacy_id legacy_registrar_id legacy_registrant_id
|
period_unit creator_str updator_str legacy_id legacy_registrar_id legacy_registrant_id
|
||||||
outzone_at delete_at registrant_verification_asked_at
|
outzone_at delete_date registrant_verification_asked_at
|
||||||
registrant_verification_token pending_json force_delete_date statuses
|
registrant_verification_token pending_json force_delete_date statuses
|
||||||
locked_by_registrant_at status_notes nameservers]
|
locked_by_registrant_at status_notes nameservers]
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sells_domain_at_auction
|
def test_sells_domain_at_auction
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
@domain.update!(delete_date: '2010-07-04')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
|
||||||
|
@ -50,17 +50,17 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_deletes_registered_domain
|
def test_deletes_registered_domain
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
@domain.update!(delete_date: '2010-07-04')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
assert_difference 'Domain.count', -1 do
|
assert_difference 'Domain.count', -1 do
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ignores_domains_with_delete_at_in_the_future_or_now
|
def test_ignores_domains_with_delete_date_in_the_future
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00'))
|
@domain.update!(delete_date: '2010-07-06')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
assert_no_difference 'Domain.count' do
|
assert_no_difference 'Domain.count' do
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
@ -69,9 +69,8 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ignores_domains_with_server_delete_prohibited_status
|
def test_ignores_domains_with_server_delete_prohibited_status
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'),
|
@domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
|
||||||
statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
|
||||||
|
|
||||||
assert_no_difference 'Domain.count' do
|
assert_no_difference 'Domain.count' do
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
|
|
@ -5,9 +5,9 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
@domain = domains(:shop)
|
@domain = domains(:shop)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_discards_domains_with_past_delete_at
|
def test_discards_domains_with_past_delete_date
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
@domain.update!(delete_date: '2010-07-04')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
@ -25,9 +25,9 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
assert @domain.discarded?
|
assert @domain.discarded?
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ignores_domains_with_delete_at_in_the_future_or_now
|
def test_ignores_domains_with_delete_date_in_the_future
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00'))
|
@domain.update!(delete_date: '2010-07-06')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
@ -36,8 +36,8 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ignores_already_discarded_domains
|
def test_ignores_already_discarded_domains
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
@domain.update!(delete_date:'2010-07-05')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
|
||||||
|
@ -51,9 +51,8 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ignores_domains_with_server_delete_prohibited_status
|
def test_ignores_domains_with_server_delete_prohibited_status
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'),
|
@domain.update!(delete_date: '2010-07-04', statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
|
||||||
statuses: [DomainStatus::SERVER_DELETE_PROHIBITED])
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
@domain.reload
|
@domain.reload
|
||||||
|
@ -62,12 +61,13 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_discarding_a_domain_schedules_deletion_at_random_time
|
def test_discarding_a_domain_schedules_deletion_at_random_time
|
||||||
travel_to Time.zone.parse('2010-07-05 10:30')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
@domain.update_columns(delete_at: Time.zone.parse('2010-07-05 10:00'))
|
|
||||||
|
@domain.update_columns(delete_date: '2010-07-05')
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
|
||||||
other_domain = domains(:airport)
|
other_domain = domains(:airport)
|
||||||
other_domain.update_columns(delete_at: Time.zone.parse('2010-07-05 10:00'))
|
other_domain.update_columns(delete_date: '2010-07-05')
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
|
|
||||||
background_job = QueJob.find_by("args->>0 = '#{@domain.id}'", job_class: DomainDeleteJob.name)
|
background_job = QueJob.find_by("args->>0 = '#{@domain.id}'", job_class: DomainDeleteJob.name)
|
||||||
|
@ -77,9 +77,9 @@ class DomainReleasableDiscardableTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_discarding_a_domain_bypasses_validation
|
def test_discarding_a_domain_bypasses_validation
|
||||||
travel_to Time.zone.parse('2010-07-05 10:30')
|
|
||||||
domain = domains(:invalid)
|
domain = domains(:invalid)
|
||||||
domain.update_columns(delete_at: Time.zone.parse('2010-07-05 10:00'))
|
domain.update_columns(delete_date: '2010-07-04')
|
||||||
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
Domain.release_domains
|
Domain.release_domains
|
||||||
domain.reload
|
domain.reload
|
||||||
|
|
|
@ -7,8 +7,8 @@ class AdminAreaDomainDetailsTest < ApplicationSystemTestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_discarded_domain_has_corresponding_label
|
def test_discarded_domain_has_corresponding_label
|
||||||
travel_to Time.zone.parse('2010-07-05 10:30')
|
@domain.delete_date = '2010-07-04'
|
||||||
@domain.delete_at = Time.zone.parse('2010-07-05 10:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
|
|
||||||
visit admin_domain_url(@domain)
|
visit admin_domain_url(@domain)
|
||||||
assert_no_css 'span.label.label-warning', text: 'deleteCandidate'
|
assert_no_css 'span.label.label-warning', text: 'deleteCandidate'
|
||||||
|
|
|
@ -20,7 +20,7 @@ class RegistrantAreaDomainDetailsTest < ApplicationSystemTestCase
|
||||||
|
|
||||||
assert_text "Valid to #{l Time.zone.parse('2010-07-05')}"
|
assert_text "Valid to #{l Time.zone.parse('2010-07-05')}"
|
||||||
assert_text "Outzone at #{l Time.zone.parse('2010-07-06')}"
|
assert_text "Outzone at #{l Time.zone.parse('2010-07-06')}"
|
||||||
assert_text "Delete at #{l Time.zone.parse('2010-07-07')}"
|
assert_text "Delete date #{l Date.parse('2010-07-07')}"
|
||||||
assert_text "Force delete date #{l Date.parse('2010-07-08')}"
|
assert_text "Force delete date #{l Date.parse('2010-07-08')}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ConvertDomainDeleteDateTaskTest < ActiveSupport::TestCase
|
||||||
|
setup do
|
||||||
|
@domain = domains(:shop)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_moves_domain_delete_date_one_day_ahead
|
||||||
|
@domain.update!(delete_date: '2010-07-05')
|
||||||
|
|
||||||
|
capture_io do
|
||||||
|
run_task
|
||||||
|
end
|
||||||
|
@domain.reload
|
||||||
|
|
||||||
|
assert_equal Date.parse('2010-07-06'), @domain.delete_date
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_processes_invalid_domains
|
||||||
|
@domain = domains(:invalid)
|
||||||
|
@domain.update_columns(delete_date: '2010-07-05')
|
||||||
|
|
||||||
|
capture_io do
|
||||||
|
run_task
|
||||||
|
end
|
||||||
|
@domain.reload
|
||||||
|
|
||||||
|
assert_equal Date.parse('2010-07-06'), @domain.delete_date
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_skips_non_expired_domains
|
||||||
|
@domain.update!(delete_date: nil)
|
||||||
|
|
||||||
|
assert_nothing_raised do
|
||||||
|
capture_io do
|
||||||
|
run_task
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_output
|
||||||
|
eliminate_effect_of_all_domains_except(@domain)
|
||||||
|
@domain.update!(delete_date: '2010-07-05')
|
||||||
|
|
||||||
|
assert_output "Domains processed: 1\n" do
|
||||||
|
run_task
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def eliminate_effect_of_all_domains_except(domain)
|
||||||
|
Domain.connection.disable_referential_integrity do
|
||||||
|
Domain.delete_all("id != #{domain.id}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_task
|
||||||
|
Rake::Task['data_migrations:convert_domain_delete_date'].execute
|
||||||
|
end
|
||||||
|
end
|
|
@ -6,8 +6,8 @@ class ReleaseDomainsTaskTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_output
|
def test_output
|
||||||
@domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59'))
|
@domain.update!(delete_date: '2010-07-04')
|
||||||
travel_to Time.zone.parse('2010-07-05 08:00')
|
travel_to Time.zone.parse('2010-07-05')
|
||||||
assert_output("shop.test is released\nReleased total: 1\n") { run_task }
|
assert_output("shop.test is released\nReleased total: 1\n") { run_task }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue