sutty/test/models/site_test.rb

97 lines
2.3 KiB
Ruby
Raw Normal View History

2019-03-26 15:32:20 +00:00
# frozen_string_literal: true
2018-04-27 18:48:26 +00:00
require 'test_helper'
class SiteTest < ActiveSupport::TestCase
2019-07-12 19:11:07 +00:00
# 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'))
2019-07-12 18:34:16 +00:00
assert site.destroy
end
2019-07-12 18:37:11 +00:00
test 'el nombre tiene que ser único' do
2019-07-12 19:11:07 +00:00
@site = create :site
site2 = build :site, name: @site.name
2019-07-12 18:37:11 +00:00
assert_not site2.valid?
end
2019-07-12 19:11:07 +00:00
test 'el nombre del sitio puede contener subdominios' do
site = build :site, name: 'hola.chau'
2019-07-17 22:18:48 +00:00
site.validate
2019-07-12 19:11:07 +00:00
2019-07-17 22:18:48 +00:00
assert_not site.errors.messages[:name].present?
2019-07-12 19:11:07 +00:00
end
test 'el nombre del sitio no puede terminar con punto' do
site = build :site, name: 'hola.chau.'
2019-07-17 22:18:48 +00:00
site.validate
2019-07-12 19:11:07 +00:00
2019-07-17 22:18:48 +00:00
assert site.errors.messages[:name].present?
2019-07-12 19:11:07 +00:00
end
test 'el nombre del sitio no puede contener wildcard' do
site = build :site, name: '*.chau'
2019-07-17 22:18:48 +00:00
site.validate
2019-07-12 19:11:07 +00:00
2019-07-17 22:18:48 +00:00
assert site.errors.messages[:name].present?
2019-07-12 19:11:07 +00:00
end
test 'el nombre del sitio solo tiene letras, numeros y guiones' do
site = build :site, name: 'A_Z!'
2019-07-17 22:18:48 +00:00
site.validate
2019-07-12 19:11:07 +00:00
2019-07-17 22:18:48 +00:00
assert site.errors.messages[:name].present?
2019-07-12 19:11:07 +00:00
end
2019-07-12 18:34:16 +00:00
test 'al destruir un sitio se eliminan los archivos' do
site = create :site
assert site.destroy
assert !File.directory?(site.path)
2018-04-30 18:51:39 +00:00
end
2018-05-11 16:24:30 +00:00
test 'se puede leer un sitio' do
site = create :site
2018-05-11 16:24:30 +00:00
assert site.valid?
assert !site.posts.empty?
2018-05-11 16:24:30 +00:00
end
2019-07-13 00:20:36 +00:00
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 = "<a href='hola'>hola</a><script>alert('pwned')</script>"
site.title = "<a href='hola'>hola</a><script>alert('pwned')</script>"
assert_equal 'hola', site.description
assert_equal 'hola', site.title
end
test 'el sitio tiene artículos en distintos idiomas' do
@site = create :site
I18n.available_locales.each do |locale|
assert @site.posts(lang: locale).size.positive?
end
end
2018-04-27 18:48:26 +00:00
end