68 lines
2.2 KiB
Ruby
Executable File
68 lines
2.2 KiB
Ruby
Executable File
# == Schema Information
|
|
#
|
|
# Table name: portals
|
|
#
|
|
# id :bigint not null, primary key
|
|
# archived :boolean default(FALSE)
|
|
# color :string
|
|
# config :jsonb
|
|
# custom_domain :string
|
|
# header_text :text
|
|
# homepage_link :string
|
|
# name :string not null
|
|
# page_title :string
|
|
# slug :string not null
|
|
# ssl_settings :jsonb not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# account_id :integer not null
|
|
# channel_web_widget_id :bigint
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_portals_on_channel_web_widget_id (channel_web_widget_id)
|
|
# index_portals_on_custom_domain (custom_domain) UNIQUE
|
|
# index_portals_on_slug (slug) UNIQUE
|
|
#
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe Portal do
|
|
context 'with validations' do
|
|
it { is_expected.to validate_presence_of(:account_id) }
|
|
it { is_expected.to validate_presence_of(:slug) }
|
|
it { is_expected.to validate_presence_of(:name) }
|
|
end
|
|
|
|
describe 'associations' do
|
|
it { is_expected.to belong_to(:account) }
|
|
it { is_expected.to have_many(:categories) }
|
|
it { is_expected.to have_many(:folders) }
|
|
it { is_expected.to have_many(:articles) }
|
|
it { is_expected.to have_many(:inboxes) }
|
|
end
|
|
|
|
describe 'validations' do
|
|
let!(:account) { create(:account) }
|
|
let!(:portal) { create(:portal, account_id: account.id) }
|
|
|
|
context 'when set portal config' do
|
|
it 'Adds default allowed_locales en' do
|
|
expect(portal.config).to be_present
|
|
expect(portal.config['allowed_locales']).to eq(['en'])
|
|
expect(portal.config['default_locale']).to eq('en')
|
|
end
|
|
|
|
it 'Does not allow any other config than allowed_locales' do
|
|
portal.update(config: { 'some_other_key': 'test_value' })
|
|
expect(portal).not_to be_valid
|
|
expect(portal.errors.full_messages[0]).to eq('Cofig in portal on some_other_key is not supported.')
|
|
end
|
|
|
|
it 'converts empty string to nil' do
|
|
portal.update(custom_domain: '')
|
|
expect(portal.custom_domain).to be_nil
|
|
end
|
|
end
|
|
end
|
|
end
|