From 98c415f672ca2f532ce08eac176359641ca25c57 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Fri, 8 Mar 2019 12:38:49 +0200 Subject: [PATCH] Fix WHOIS update for a domain being sent to an auction --- app/models/concerns/domain/releasable.rb | 6 ++++-- app/models/domain.rb | 2 +- test/models/domain/releasable/auctionable_test.rb | 13 +++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/domain/releasable.rb b/app/models/concerns/domain/releasable.rb index 7831d714f..84696784e 100644 --- a/app/models/concerns/domain/releasable.rb +++ b/app/models/concerns/domain/releasable.rb @@ -35,8 +35,10 @@ module Concerns def release if release_to_auction - domain_name.sell_at_auction - destroy! + transaction do + domain_name.sell_at_auction + destroy! + end else discard end diff --git a/app/models/domain.rb b/app/models/domain.rb index 4e65630cd..61b296b89 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -93,7 +93,7 @@ class Domain < ActiveRecord::Base true end - after_commit :update_whois_record + after_commit :update_whois_record, unless: 'domain_name.at_auction?' after_create :update_reserved_domains def update_reserved_domains diff --git a/test/models/domain/releasable/auctionable_test.rb b/test/models/domain/releasable/auctionable_test.rb index e158b468d..9ed0abc7f 100644 --- a/test/models/domain/releasable/auctionable_test.rb +++ b/test/models/domain/releasable/auctionable_test.rb @@ -1,6 +1,9 @@ require 'test_helper' class DomainReleasableAuctionableTest < ActiveSupport::TestCase + # Needed for `test_updates_whois` test because of `after_commit :update_whois_record` in Domain + self.use_transactional_fixtures = false + setup do @domain = domains(:shop) Domain.release_to_auction = true @@ -28,6 +31,16 @@ class DomainReleasableAuctionableTest < ActiveSupport::TestCase end end + def test_updates_whois + assert_equal 'shop.test', @domain.name + @domain.update!(delete_at: Time.zone.parse('2010-07-05 07:59')) + travel_to Time.zone.parse('2010-07-05 08:00') + + Domain.release_domains + + assert Whois::Record.find_by(name: 'shop.test') + end + def test_ignores_domains_with_delete_at_in_the_future_or_now @domain.update!(delete_at: Time.zone.parse('2010-07-05 08:00')) travel_to Time.zone.parse('2010-07-05 08:00')