Spiegel von
https://github.com/paviliondev/discourse-custom-wizard.git
synchronisiert 2024-11-09 20:02:54 +01:00
35021eb176
I've tweaked the subscription client gem so we can just use the gem's models and tables in this plugin's rspec, which makes duplicating and stubbing them unnecessary. See further https://github.com/paviliondev/discourse_subscription_client
123 Zeilen
3,4 KiB
Ruby
123 Zeilen
3,4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe "custom field extensions" do
|
|
fab!(:topic) { Fabricate(:topic) }
|
|
fab!(:post) { Fabricate(:post) }
|
|
fab!(:category) { Fabricate(:category) }
|
|
fab!(:group) { Fabricate(:group) }
|
|
fab!(:user) { Fabricate(:user) }
|
|
|
|
let(:custom_field_json) { get_wizard_fixture("custom_field/custom_fields") }
|
|
let(:subscription_custom_field_json) { get_wizard_fixture("custom_field/subscription_custom_fields") }
|
|
|
|
before do
|
|
custom_field_json['custom_fields'].each do |field_json|
|
|
custom_field = CustomWizard::CustomField.new(nil, field_json)
|
|
custom_field.save
|
|
end
|
|
end
|
|
|
|
context "topic" do
|
|
it "registers topic custom fields" do
|
|
topic
|
|
expect(Topic.get_custom_field_descriptor("topic_field_1").type).to eq(:boolean)
|
|
end
|
|
|
|
it "adds topic custom fields to the topic_view serializer" do
|
|
topic.custom_fields["topic_field_1"] = true
|
|
topic.save_custom_fields(true)
|
|
|
|
serializer = TopicViewSerializer.new(
|
|
TopicView.new(topic.id, user),
|
|
scope: Guardian.new(user),
|
|
root: false
|
|
).as_json
|
|
|
|
expect(serializer[:topic_field_1]).to eq(true)
|
|
end
|
|
|
|
it "adds topic custom fields to the topic_list_item serializer" do
|
|
topic.custom_fields["topic_field_1"] = true
|
|
topic.save_custom_fields(true)
|
|
|
|
serializer = TopicListItemSerializer.new(
|
|
topic,
|
|
scope: Guardian.new(user),
|
|
root: false
|
|
).as_json
|
|
|
|
expect(serializer[:topic_field_1]).to eq(true)
|
|
end
|
|
end
|
|
|
|
context "post" do
|
|
it "registers post custom fields" do
|
|
post
|
|
expect(Post.get_custom_field_descriptor("post_field_1").type).to eq(:integer)
|
|
end
|
|
|
|
it "adds post custom fields to the post serializer" do
|
|
post.custom_fields["post_field_1"] = 7
|
|
post.save_custom_fields(true)
|
|
|
|
serializer = PostSerializer.new(
|
|
post,
|
|
scope: Guardian.new(user),
|
|
root: false
|
|
).as_json
|
|
|
|
expect(serializer[:post_field_1]).to eq(7)
|
|
end
|
|
end
|
|
|
|
context "subscription custom fields" do
|
|
before do
|
|
enable_subscription("business")
|
|
|
|
subscription_custom_field_json['custom_fields'].each do |field_json|
|
|
custom_field = CustomWizard::CustomField.new(nil, field_json)
|
|
custom_field.save
|
|
end
|
|
end
|
|
|
|
context "category" do
|
|
it "registers" do
|
|
category
|
|
expect(Category.get_custom_field_descriptor("category_field_1").type).to eq(:json)
|
|
end
|
|
|
|
it "adds custom fields to the basic category serializer" do
|
|
category.custom_fields["category_field_1"] = { a: 1, b: 2 }.to_json
|
|
category.save_custom_fields(true)
|
|
|
|
serializer = BasicCategorySerializer.new(
|
|
category,
|
|
scope: Guardian.new(user),
|
|
root: false
|
|
).as_json
|
|
|
|
expect(serializer[:category_field_1]).to eq({ a: 1, b: 2 }.to_json)
|
|
end
|
|
end
|
|
|
|
context "group" do
|
|
it "registers" do
|
|
group
|
|
expect(Group.get_custom_field_descriptor("group_field_1").type).to eq(:string)
|
|
end
|
|
|
|
it "adds custom fields to the basic group serializer" do
|
|
group.custom_fields["group_field_1"] = "Hello"
|
|
group.save_custom_fields(true)
|
|
|
|
serializer = BasicGroupSerializer.new(
|
|
group,
|
|
scope: Guardian.new(user),
|
|
root: false
|
|
).as_json
|
|
|
|
expect(serializer[:group_field_1]).to eq("Hello")
|
|
end
|
|
end
|
|
end
|
|
end
|