# frozen_string_literal: true require 'test_helper' class SiteTest < ActiveSupport::TestCase def site @site ||= create :site end # Asegurarse que el sitio se destruye al terminar de usarlo teardown do site&.destroy end test 'se puede crear un sitio' do 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 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 puede terminar con punto' do @site = build :site, name: 'hola.chau.' site.validate assert_not 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 assert site.valid? assert !site.posts.empty? end test 'se pueden renombrar' do 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 test 'el sitio tiene artículos en distintos idiomas' do I18n.available_locales.each do |locale| assert site.posts(lang: locale).size.positive? end end test 'tienen un hostname que puede cambiar' do assert_equal "#{site.name}.#{Site.domain}", site.hostname site.name = name = SecureRandom.hex assert_equal "#{name}.#{Site.domain}", site.hostname end test 'se pueden traer los datos de una plantilla' do @site = create :site, design: Design.find_by(gem: 'editorial-autogestiva-jekyll-theme') assert_equal %i[post], site.layouts.to_h.keys site.config.write site.reload assert_equal %w[book cart confirmation editorial menu payment post shipment], site.data['layouts'].keys assert_equal %i[book cart confirmation editorial menu payment post shipment], site.layouts.to_h.keys end test 'se pueden encolar una sola vez' do assert site.enqueue! assert site.enqueued? assert_not site.enqueue! end end