# frozen_string_literal: true require 'test_helper' class SiteTest < ActiveSupport::TestCase # Asegurarse que el sitio se destruye al terminar de usarlo teardown do @site&.destroy end test 'se puede crear un sitio' do site = create :site assert site.valid? # TODO: Mover a la validación del sitio o hacer algo similar assert File.directory?(site.path) assert File.directory?(File.join(site.path, '.git')) assert site.destroy end test 'el nombre tiene que ser único' do @site = create :site site2 = build :site, name: @site.name assert_not site2.valid? end test 'el nombre del sitio puede contener subdominios' do site = build :site, name: 'hola.chau' site.validate assert_not site.errors.messages[:name].present? end test 'el nombre del sitio no puede terminar con punto' do site = build :site, name: 'hola.chau.' site.validate assert site.errors.messages[:name].present? end test 'el nombre del sitio no puede contener wildcard' do site = build :site, name: '*.chau' site.validate assert site.errors.messages[:name].present? end test 'el nombre del sitio solo tiene letras, numeros y guiones' do site = build :site, name: 'A_Z!' site.validate assert site.errors.messages[:name].present? end test 'al destruir un sitio se eliminan los archivos' do site = create :site assert site.destroy assert !File.directory?(site.path) end test 'se puede leer un sitio' do site = create :site, name: 'sutty.nl' assert site.valid? assert !site.posts.empty? end test 'se pueden renombrar' do @site = create :site path = @site.path @site.update_attribute :name, SecureRandom.hex assert_not_equal path, @site.path assert File.directory?(@site.path) assert_not File.directory?(path) end test 'no se puede guardar html en title y description' do site = build :site site.description = "hola" site.title = "hola" assert_equal 'hola', site.description assert_equal 'hola', site.title end end