5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-03 13:16:08 +00:00
panel/test/controllers/sites_controller_test.rb
f 3a4f3918cf
se pueden cambiar las licencias
de paso nos aseguramos que cuando el sitio cambie de nombre se actualice
la configuración de jekyll, lo que producía bugs sutiles donde el sitio
leía correctamente pero en una dirección errónea
2019-09-17 20:38:24 -03:00

178 lines
4.4 KiB
Ruby

# frozen_string_literal: true
require 'test_helper'
class SitesControllerTest < ActionDispatch::IntegrationTest
setup do
@rol = create :rol
@site = @rol.site
@usuarie = @rol.usuarie
@authorization = {
Authorization: ActionController::HttpAuthentication::Basic
.encode_credentials(@usuarie.email, @usuarie.password)
}
end
teardown do
@site.destroy
end
test 'se pueden ver' do
get sites_url, headers: @authorization
assert_match @site.name, response.body
end
test 'se puede ver el formulario de creación' do
get new_site_url, headers: @authorization
assert_match(/<form.*id="new_site"/, response.body)
end
test 'se pueden crear' do
name = SecureRandom.hex
design = Design.all.sample
post sites_url, headers: @authorization, params: {
site: {
name: name,
title: name,
description: name * 2,
design_id: design.id,
licencia_id: Licencia.first.id,
deploys_attributes: {
'0' => {
type: 'DeployLocal'
}
}
}
}
site = Site.find_by_name(name)
assert site
assert_equal @usuarie.email, site.roles.first.usuarie.email
assert_equal 'usuarie', site.roles.first.rol
assert_equal name, site.name
assert_equal name, site.title
assert_equal name * 2, site.description
assert_equal design, site.design
assert_equal design.gem, site.config.theme
assert_equal name, site.config.title
assert_equal name * 2, site.config.description
# TODO: Esto requiere que podamos buscar hacia atrás en la historia
# del repositorio
# assert_equal I18n.t('site_service.create', name: name),
# site.repository.rugged.head.target.message
I18n.available_locales.each do |locale|
assert_equal 3, site.posts(lang: locale).size
end
site.destroy
end
test 'no se pueden crear con cualquier deploy' do
name = SecureRandom.hex
assert_raise ActiveRecord::SubclassNotFound do
post sites_url, headers: @authorization, params: {
site: {
name: name,
design_id: create(:design).id,
licencia_id: create(:licencia).id,
deploys_attributes: {
'0' => {
type: 'DeployNoExiste'
}
}
}
}
end
end
test 'se pueden encolar' do
post site_enqueue_url(@site), headers: @authorization
assert File.directory?(@site.deploys.first.destination)
assert File.exist?(File.join(@site.deploys.first.destination,
'index.html'))
end
test 'se pueden actualizar' do
name = SecureRandom.hex
design = create :design
put site_url(@site), headers: @authorization, params: {
site: {
name: name,
title: name,
description: name * 2,
design_id: design.id,
licencia_id: Licencia.all.second.id,
deploys_attributes: {
'0' => {
type: 'DeployLocal'
}
}
}
}
@site = Site.find(@site.id)
assert_equal name, @site.name
assert_equal name, @site.title
assert_equal name * 2, @site.description
assert_equal design, @site.design
assert_equal design.gem, @site.config.theme
assert_equal name, @site.config.title
assert_equal name * 2, @site.config.description
# assert_equal I18n.t('site_service.update', name: name),
# @site.repository.rugged.head.target.message
I18n.available_locales.each do |locale|
Mobility.with_locale(locale) do
assert @site.posts(lang: locale).find_by(title: @site.licencia.name)
end
end
end
test 'se pueden cambiar las licencias' do
name = SecureRandom.hex
post sites_url, headers: @authorization, params: {
site: {
name: name,
title: name,
description: name * 2,
design_id: create(:design).id,
licencia_id: Licencia.first.id,
deploys_attributes: {
'0' => {
type: 'DeployLocal'
}
}
}
}
site = Site.find_by_name(name)
put site_url(site), headers: @authorization, params: {
site: { licencia_id: Licencia.all.second.id }
}
site.reload
I18n.available_locales.each do |locale|
Mobility.with_locale(locale) do
assert site.posts(lang: locale).find_by(title: site.licencia.name)
end
end
site.destroy
end
end