# 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 test 'al cambiar el nombre se crea un deploy alternativo' do site_name = site.name new_name = SecureRandom.hex original_destination = site.deploy_local.destination urls = [site.url] assert site.deploy_local.deploy assert_not site.deploy_local.destination_changed? assert site.update(name: new_name) urls << site.url assert_equal urls.sort, site.urls.sort assert File.symlink?(original_destination) assert File.exist?(site.deploy_local.destination) assert_equal 2, site.deploys.count end test 'al cambiar el nombre se renombra el directorio' do site_name = site.name new_name = "test-#{SecureRandom.hex}" original_destination = site.deploy_local.destination assert site.deploy_local.deploy assert_not site.deploy_local.destination_changed? assert site.update(name: new_name) assert site.deploy_local.hostname.start_with?(new_name) assert File.symlink?(original_destination) assert File.exist?(site.deploy_local.destination) end test 'al cambiar el nombre se actualiza el www' do site_name = site.name new_name = "test-#{SecureRandom.hex}" assert (deploy_www = site.deploys.create(type: 'DeployWww')) assert site.deploy_local.deploy assert_not site.deploy_local.destination_changed? assert site.update(name: new_name) assert deploy_www.reload.hostname.include?(new_name) assert_equal 4, site.deploys.count end test 'al cambiar el nombre varias veces se crean varios links' do assert site.deploy_local.deploy q = rand(3..10) q.times do assert site.update(name: "test-#{SecureRandom.hex}") end assert_equal q, site.deploys.count end test 'no se puede cambiar el nombre si ya existía un archivo en el mismo lugar' do assert site.deploy_local.deploy new_name = "test-#{SecureRandom.hex}" FileUtils.mkdir File.join(Rails.root, '_deploy', "#{new_name}.#{Site.domain}") assert_not site.update(name: new_name) end end