54 lines
1.8 KiB
Ruby
54 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
||
|
||
require 'rails_helper'
|
||
|
||
describe 'discourse_post_event_allowed_custom_fields' do
|
||
let(:user_1) { Fabricate(:user, admin: true) }
|
||
let(:topic_1) { Fabricate(:topic, user: user_1) }
|
||
let(:post_1) { Fabricate(:post, topic: topic_1) }
|
||
let(:post_event_1) { Fabricate(:event, post: post_1) }
|
||
|
||
before do
|
||
SiteSetting.discourse_post_event_allowed_custom_fields = 'foo|bar|foo-bar|foo_baz'
|
||
post_event_1.update!(custom_fields: {})
|
||
|
||
SiteSetting.calendar_enabled = true
|
||
SiteSetting.discourse_post_event_enabled = true
|
||
Jobs.run_immediately!
|
||
end
|
||
|
||
it 'removes the key on the custom fields when removing a key from site setting' do
|
||
post_event_1.update!(custom_fields: { foo: 1, bar: 2 })
|
||
|
||
expect(post_event_1.custom_fields['foo']).to eq(1)
|
||
expect(post_event_1.custom_fields['bar']).to eq(2)
|
||
|
||
DiscourseEvent.trigger(:site_setting_changed, :discourse_post_event_allowed_custom_fields, 'foo|bar', 'foo')
|
||
|
||
post_event_1.reload
|
||
|
||
expect(post_event_1.custom_fields['foo']).to eq(1)
|
||
expect(post_event_1.custom_fields['bar']).to eq(nil)
|
||
end
|
||
|
||
it 'doesn’t set a not allowed key from site setting' do
|
||
expect {
|
||
post_event_1.update!(custom_fields: { baz: 3 })
|
||
}.to raise_error(ActiveRecord::RecordInvalid)
|
||
end
|
||
|
||
it 'works with a setting containing dash' do
|
||
post = create_post_with_event(user_1, "fooBar='1'")
|
||
expect(post.event.custom_fields['foo-bar']).to eq('1')
|
||
expect(post.event.custom_fields['foo_bar']).to eq(nil)
|
||
expect(post.event.custom_fields['fooBar']).to eq(nil)
|
||
end
|
||
|
||
it 'works with a setting containing underscore' do
|
||
post = create_post_with_event(user_1, "fooBaz='1'")
|
||
expect(post.event.custom_fields['foo_baz']).to eq('1')
|
||
expect(post.event.custom_fields['foo-baz']).to eq(nil)
|
||
expect(post.event.custom_fields['fooBaz']).to eq(nil)
|
||
end
|
||
end
|