mirror of
https://github.com/internetee/registry.git
synced 2025-08-27 11:33:32 +02:00
Merge pull request #2825 from internetee/2823-send-poll-messages-when-admin-adds-or-removed-statuses-on-a-domain
feat(admin): notify registrar about domain status changes
This commit is contained in:
commit
7f33fd386e
3 changed files with 63 additions and 20 deletions
40
Dockerfile
40
Dockerfile
|
@ -1,4 +1,4 @@
|
|||
FROM --platform=linux/amd64 ruby:3.0.3-slim-buster
|
||||
FROM --platform=linux/amd64 ruby:3.0.3-bullseye
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends > /dev/null \
|
||||
|
@ -29,27 +29,27 @@ RUN apt-get update > /dev/null && apt-get install -y --no-install-recommends > /
|
|||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# add repository for Node.js in the LTS version
|
||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
||||
RUN curl -sL https://deb.nodesource.com/setup_20.x | bash -
|
||||
|
||||
RUN apt-get install -y --no-install-recommends > /dev/null \
|
||||
nodejs=* \
|
||||
qt5-default=* \
|
||||
libqt5webkit5-dev=* \
|
||||
gstreamer1.0-plugins-base=* \
|
||||
libappindicator3-1=* \
|
||||
gstreamer1.0-tools=* \
|
||||
qtdeclarative5-dev=* \
|
||||
fonts-liberation=* \
|
||||
gstreamer1.0-x=* \
|
||||
libasound2=* \
|
||||
libnspr4=* \
|
||||
libnss3=* \
|
||||
libxss1=* \
|
||||
libxtst6=* \
|
||||
xdg-utils=* \
|
||||
qtdeclarative5-dev=* \
|
||||
fonts-liberation=* \
|
||||
gstreamer1.0-x=* \
|
||||
nodejs \
|
||||
qtbase5-dev \
|
||||
libqt5webkit5-dev \
|
||||
gstreamer1.0-plugins-base \
|
||||
libappindicator3-1 \
|
||||
gstreamer1.0-tools \
|
||||
qtdeclarative5-dev \
|
||||
fonts-liberation \
|
||||
gstreamer1.0-x \
|
||||
libasound2 \
|
||||
libnspr4 \
|
||||
libnss3 \
|
||||
libxss1 \
|
||||
libxtst6 \
|
||||
xdg-utils \
|
||||
qtdeclarative5-dev \
|
||||
fonts-liberation \
|
||||
gstreamer1.0-x \
|
||||
wkhtmltopdf \
|
||||
libxslt1-dev \
|
||||
libxml2-dev \
|
||||
|
|
|
@ -31,6 +31,7 @@ module Admin
|
|||
|
||||
if @domain.update(dp)
|
||||
flash[:notice] = I18n.t('domain_updated')
|
||||
inform_registrar_about_status_changes
|
||||
redirect_to [:admin, @domain]
|
||||
else
|
||||
@domain.reload
|
||||
|
@ -111,6 +112,22 @@ module Admin
|
|||
end
|
||||
end
|
||||
|
||||
def inform_registrar_about_status_changes
|
||||
return unless @domain.saved_change_to_statuses?
|
||||
|
||||
old_statuses, new_statuses = @domain.saved_change_to_statuses
|
||||
removed = old_statuses - new_statuses
|
||||
added = new_statuses - old_statuses
|
||||
|
||||
added.each do |status|
|
||||
@domain.registrar.notifications.create!(text: "#{status} set on domain #{@domain.name}")
|
||||
end
|
||||
|
||||
removed.each do |status|
|
||||
@domain.registrar.notifications.create!(text: "#{status} is cancelled on domain #{@domain.name}")
|
||||
end
|
||||
end
|
||||
|
||||
def build_associations
|
||||
@server_statuses = @domain.statuses.select { |x| DomainStatus::SERVER_STATUSES.include?(x) }
|
||||
@server_statuses = [nil] if @server_statuses.empty?
|
||||
|
|
26
test/integration/domain/domains_controller_test.rb
Normal file
26
test/integration/domain/domains_controller_test.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
require 'test_helper'
|
||||
|
||||
class DomainsControllerTest < ApplicationIntegrationTest
|
||||
|
||||
def setup
|
||||
@domain = domains(:shop)
|
||||
@admin = users(:admin)
|
||||
sign_in @admin
|
||||
end
|
||||
|
||||
def test_inform_registrar_about_status_changes
|
||||
patch admin_domain_path(domains(:shop)), params: { domain: { statuses: [DomainStatus::PENDING_UPDATE,] } }
|
||||
|
||||
# Status OK is removed because, if:
|
||||
# (statuses.length > 1) || !valid?
|
||||
# then status OK is removed by manage_automatic_statuses method in domain.rb
|
||||
notifications = domains(:shop).registrar.notifications.last(2)
|
||||
assert_equal "#{DomainStatus::PENDING_UPDATE} set on domain #{domains(:shop).name}", notifications.first.text
|
||||
assert_equal "#{DomainStatus::OK} is cancelled on domain #{domains(:shop).name}", notifications.last.text
|
||||
|
||||
patch admin_domain_path(domains(:shop)), params: { domain: { statuses: [DomainStatus::PENDING_DELETE_CONFIRMATION] } }
|
||||
notifications = domains(:shop).registrar.notifications.last(2)
|
||||
assert_equal "#{DomainStatus::PENDING_DELETE_CONFIRMATION} set on domain #{domains(:shop).name}", notifications.first.text
|
||||
assert_equal "#{DomainStatus::PENDING_UPDATE} is cancelled on domain #{domains(:shop).name}", notifications.last.text
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue