Al cambiar el nombre del sitio no puede haber un dominio alternativo igual
This commit is contained in:
parent
a1fde94378
commit
df29c4ca95
4 changed files with 41 additions and 0 deletions
|
@ -17,6 +17,7 @@ class Site
|
||||||
validates :name, hostname: true
|
validates :name, hostname: true
|
||||||
validates_presence_of :canonical_deploy
|
validates_presence_of :canonical_deploy
|
||||||
validate :deploy_local_presence
|
validate :deploy_local_presence
|
||||||
|
validate :name_changed_is_unique_hostname, if: :name_changed?
|
||||||
|
|
||||||
has_one :canonical_deploy, class_name: 'Deploy'
|
has_one :canonical_deploy, class_name: 'Deploy'
|
||||||
has_many :deploys, dependent: :destroy
|
has_many :deploys, dependent: :destroy
|
||||||
|
@ -68,6 +69,19 @@ class Site
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
# Validar que al cambiar el nombre no estemos utilizando un
|
||||||
|
# hostname reservado por otro sitio.
|
||||||
|
#
|
||||||
|
# Al cambiar el nombre del DeployLocal se va a validar que el
|
||||||
|
# hostname nuevo sea único.
|
||||||
|
def name_changed_is_unique_hostname
|
||||||
|
deploy_local.hostname = nil
|
||||||
|
|
||||||
|
return if deploy_local.valid?
|
||||||
|
|
||||||
|
errors.add :name, I18n.t('activerecord.errors.models.site.attributes.name.duplicated_hostname')
|
||||||
|
end
|
||||||
|
|
||||||
# Si cambia el nombre queremos actualizarlo en el DeployLocal y
|
# Si cambia el nombre queremos actualizarlo en el DeployLocal y
|
||||||
# recargar el deploy canónico para tomar el nombre que
|
# recargar el deploy canónico para tomar el nombre que
|
||||||
# corresponda.
|
# corresponda.
|
||||||
|
|
|
@ -147,6 +147,7 @@ en:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
no_subdomains: 'Name cannot contain dots'
|
no_subdomains: 'Name cannot contain dots'
|
||||||
|
duplicated_hostname: 'There already is a site with this address'
|
||||||
deploys:
|
deploys:
|
||||||
deploy_local_presence: 'We need to be build the site!'
|
deploy_local_presence: 'We need to be build the site!'
|
||||||
design_id:
|
design_id:
|
||||||
|
|
|
@ -147,6 +147,7 @@ es:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
no_subdomains: 'El nombre no puede contener puntos'
|
no_subdomains: 'El nombre no puede contener puntos'
|
||||||
|
duplicated_hostname: 'Ya existe un sitio con ese nombre'
|
||||||
deploys:
|
deploys:
|
||||||
deploy_local_presence: '¡Necesitamos poder generar el sitio!'
|
deploy_local_presence: '¡Necesitamos poder generar el sitio!'
|
||||||
design_id:
|
design_id:
|
||||||
|
|
25
test/models/site/deployment_test.rb
Normal file
25
test/models/site/deployment_test.rb
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class Site::DeploymentTest < ActiveSupport::TestCase
|
||||||
|
def site
|
||||||
|
@site ||= create :site
|
||||||
|
end
|
||||||
|
|
||||||
|
teardown do
|
||||||
|
@site&.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'al publicar el sitio se crea el directorio' do
|
||||||
|
assert site.deploy_local.deploy
|
||||||
|
assert site.deploy_local.exist?
|
||||||
|
end
|
||||||
|
|
||||||
|
test 'al cambiar el nombre no puede pisar un dominio que ya existe' do
|
||||||
|
site_pre = create :site
|
||||||
|
dup_name = "test-#{SecureRandom.hex}"
|
||||||
|
assert site_pre.deploys.create(type: 'DeployAlternativeDomain', hostname: "#{dup_name}.#{Site.domain}")
|
||||||
|
assert_not site.update(name: dup_name)
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue