discourse/spec/serializers/reviewable_queued_post_serializer_spec.rb
Robin Ward e47e0af123
FEATURE: Allow viewing of raw emails for reviewable queued posts (#7910)
If a post arrives via email but must be reviewed, we now show an
icon that can be clicked to view the raw contents of the email.

This is useful if Discourse's email parser is acting odd and the user
reviewing the post wants to know what the original contents were before
approving/rejecting the post.
2019-07-19 11:56:14 -04:00

71 lines
2.4 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(payload['via_email']).to eq(true)
expect(payload['raw_email']).to eq('store_me')
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