discourse/spec/serializers/reviewable_queued_post_serializer_spec.rb
Daniel Waterworth e219588142 DEV: Prefabrication (test optimization) (#7414)
* Introduced fab!, a helper that creates database state for a group

It's almost identical to let_it_be, except:

 1. It creates a new object for each test by default,
 2. You can disable it using PREFABRICATION=0
2019-05-07 13:12:20 +10:00

69 lines
2.3 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe ReviewableQueuedPostSerializer do
fab!(:admin) { Fabricate(:admin) }
context "new topic" do
fab!(:reviewable) { Fabricate(:reviewable_queued_post_topic) }
it "allows us to edit category / title" do
json = ReviewableQueuedPostSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
payload = json[:payload]
expect(payload['raw']).to eq('hello world post contents.')
expect(payload['title']).to eq('queued post title')
expect(payload['tags']).to eq(['cool', 'neat'])
expect(json[:topic_id]).to be_blank
expect(json[:can_edit]).to eq(true)
fields = json[:editable_fields]
expect(fields).to be_present
category_field = fields.find { |f| f[:id] == 'category_id' }
expect(category_field).to be_present
expect(category_field[:type]).to eq(:category)
title_field = fields.find { |f| f[:id] == 'payload.title' }
expect(title_field).to be_present
expect(title_field[:type]).to eq(:text)
raw_field = fields.find { |f| f[:id] == 'payload.raw' }
expect(raw_field).to be_present
expect(raw_field[:type]).to eq(:editor)
tags_field = fields.find { |f| f[:id] == 'payload.tags' }
expect(tags_field).to be_present
expect(tags_field[:type]).to eq(:tags)
end
end
context "reply to an existing topic" do
fab!(:reviewable) { Fabricate(:reviewable_queued_post) }
it "includes correct user fields" do
json = ReviewableQueuedPostSerializer.new(reviewable, scope: Guardian.new(admin), root: nil).as_json
payload = json[:payload]
expect(payload['raw']).to eq('hello world post contents.')
expect(payload['title']).to be_blank
expect(json[:topic_id]).to eq(reviewable.topic_id)
expect(json[:topic_url]).to eq(reviewable.topic.url)
expect(json[:can_edit]).to eq(true)
fields = json[:editable_fields]
expect(fields).to be_present
expect(fields.any? { |f| f[:id] == 'payload.title' }).to eq(false)
expect(fields.any? { |f| f[:id] == 'category_id' }).to eq(false)
raw_field = fields.find { |f| f[:id] == 'payload.raw' }
expect(raw_field).to be_present
expect(raw_field[:type]).to eq(:editor)
end
end
end