This updates tests to use latest rails 5 practice and updates ALL dependencies that could be updated Performance testing shows that performance has not regressed if anything it is marginally faster now.
145 lines
3.6 KiB
Ruby
145 lines
3.6 KiB
Ruby
require 'rails_helper'
|
|
require_dependency 'queued_posts_controller'
|
|
require_dependency 'queued_post'
|
|
|
|
describe QueuedPostsController do
|
|
context 'without authentication' do
|
|
it 'fails' do
|
|
get :index, format: :json
|
|
expect(response).not_to be_successful
|
|
end
|
|
end
|
|
|
|
context 'as a regular user' do
|
|
let!(:user) { log_in(:user) }
|
|
it 'fails' do
|
|
get :index, format: :json
|
|
expect(response).not_to be_successful
|
|
end
|
|
end
|
|
|
|
context 'as an admin' do
|
|
let!(:user) { log_in(:moderator) }
|
|
|
|
it 'returns the queued posts' do
|
|
get :index, format: :json
|
|
expect(response).to be_successful
|
|
end
|
|
end
|
|
|
|
describe '#update' do
|
|
let!(:user) { log_in(:moderator) }
|
|
let(:qp) { Fabricate(:queued_post) }
|
|
|
|
context 'not found' do
|
|
it 'returns json error' do
|
|
qp.destroy!
|
|
|
|
put :update, params: {
|
|
id: qp.id, queued_post: { state: 'approved' }
|
|
}, format: :json
|
|
|
|
expect(response.status).to eq(422)
|
|
|
|
expect(eval(response.body)).to eq(described_class.new.create_errors_json(I18n.t('queue.not_found')))
|
|
end
|
|
end
|
|
|
|
context 'approved' do
|
|
it 'updates the post to approved' do
|
|
|
|
put :update, params: {
|
|
id: qp.id, queued_post: { state: 'approved' }
|
|
}, format: :json
|
|
|
|
expect(response).to be_successful
|
|
|
|
qp.reload
|
|
expect(qp.state).to eq(QueuedPost.states[:approved])
|
|
end
|
|
end
|
|
|
|
context 'rejected' do
|
|
it 'updates the post to rejected' do
|
|
|
|
put :update, params: {
|
|
id: qp.id, queued_post: { state: 'rejected' }
|
|
}, format: :json
|
|
|
|
expect(response).to be_successful
|
|
|
|
qp.reload
|
|
expect(qp.state).to eq(QueuedPost.states[:rejected])
|
|
end
|
|
end
|
|
|
|
context 'editing content' do
|
|
let(:changes) do
|
|
{
|
|
raw: 'new raw',
|
|
title: 'new title',
|
|
category_id: 10,
|
|
tags: ['new_tag']
|
|
}
|
|
end
|
|
|
|
context 'when it is a topic' do
|
|
let(:queued_topic) { Fabricate(:queued_topic) }
|
|
|
|
before do
|
|
put :update, params: {
|
|
id: queued_topic.id, queued_post: changes
|
|
}, format: :json
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
|
|
it 'updates raw' do
|
|
expect(queued_topic.reload.raw).to eq(changes[:raw])
|
|
end
|
|
|
|
it 'updates the title' do
|
|
expect(queued_topic.reload.post_options['title']).to eq(changes[:title])
|
|
end
|
|
|
|
it 'updates the category' do
|
|
expect(queued_topic.reload.post_options['category']).to eq(changes[:category_id])
|
|
end
|
|
|
|
it 'updates the tags' do
|
|
expect(queued_topic.reload.post_options['tags']).to eq(changes[:tags])
|
|
end
|
|
end
|
|
|
|
context 'when it is a reply' do
|
|
let(:queued_reply) { Fabricate(:queued_post) }
|
|
|
|
before do
|
|
put :update, params: {
|
|
id: queued_reply.id, queued_post: changes
|
|
}, format: :json
|
|
|
|
expect(response).to be_successful
|
|
end
|
|
|
|
it 'updates raw' do
|
|
expect(queued_reply.reload.raw).to eq(changes[:raw])
|
|
end
|
|
|
|
it 'does not update the title' do
|
|
expect(queued_reply.reload.post_options['title']).to be_nil
|
|
end
|
|
|
|
it 'does not update the category' do
|
|
original_category = queued_reply.post_options['category']
|
|
expect(queued_reply.reload.post_options['category']).to eq(original_category)
|
|
end
|
|
|
|
it 'does not update the tags' do
|
|
expect(queued_reply.reload.post_options['tags']).to be_nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|