discourse/vendor/gems/discourse_poll/spec/plugin_spec.rb

67 lines
1.5 KiB
Ruby

require 'spec_helper'
require 'discourse_poll/plugin'
require 'ostruct'
describe DiscoursePoll::Plugin do
let(:registry) { stub_everything }
let(:plugin) { DiscoursePoll::Plugin.new(registry) }
context '.setup' do
it 'registers its js' do
plugin.expects(:register_js)
plugin.setup
end
it 'registers its css' do
plugin.expects(:register_css)
plugin.setup
end
it 'registers a poll archetype' do
plugin.expects(:register_archetype).with('poll', DiscoursePoll::Plugin::POLL_OPTIONS)
plugin.setup
end
it 'registers a handler on post_create' do
plugin.expects(:listen_for).with(:before_create_post)
plugin.setup
end
end
context ".before_create_post" do
context 'without a poll' do
let(:post) { OpenStruct.new(archetype: 'something-else', post_number: 1000) }
it "doesn't set the sort order" do
plugin.before_create_post(post)
post.sort_order.should_not == DiscoursePoll::Plugin::MAX_SORT_ORDER
end
end
context 'with a poll' do
let(:post) { OpenStruct.new(archetype: 'poll') }
it 'sets the sort order to 1 when the post_number is 1' do
post.post_number = 1
plugin.before_create_post(post)
post.sort_order.should == 1
end
it 'sets the sort order to MAX_SORT_ORDER when the post_number is not 1' do
post.post_number = 1000
plugin.before_create_post(post)
post.sort_order.should == DiscoursePoll::Plugin::MAX_SORT_ORDER
end
end
end
end