From ba484dc9a1e759d629b2af8794af35586c37d9f1 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 10 Jul 2017 18:19:59 +0100 Subject: [PATCH] =?UTF-8?q?Move=20=E2=80=98dummy=20provider=E2=80=99=20log?= =?UTF-8?q?ic=20into=20a=20shared=20context,=20to=20allow=20for=20use=20by?= =?UTF-8?q?=20multiple=20specs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/dummy_provider.rb | 38 +++++++++++++++++++++++++ spec/lib/discourse_chat/manager_spec.rb | 33 ++------------------- 2 files changed, 41 insertions(+), 30 deletions(-) create mode 100644 spec/dummy_provider.rb diff --git a/spec/dummy_provider.rb b/spec/dummy_provider.rb new file mode 100644 index 0000000..92c79f9 --- /dev/null +++ b/spec/dummy_provider.rb @@ -0,0 +1,38 @@ + +RSpec.shared_context "dummy provider" do + before(:each) do + if defined? ::DiscourseChat::Provider::DummyProvider + ::DiscourseChat::Provider.send(:remove_const, :DummyProvider) + end + + module ::DiscourseChat::Provider::DummyProvider + PROVIDER_NAME = "dummy".freeze + PROVIDER_ENABLED_SETTING = :chat_integration_enabled # Tie to main plugin enabled setting + @@sent_messages = [] + @@raise_exception = nil + + def self.trigger_notification(post, channel) + if @@raise_exception + raise @@raise_exception + end + @@sent_messages.push(post: post.id, channel: channel) + end + + def self.sent_messages + @@sent_messages + end + + def self.set_raise_exception(bool) + @@raise_exception = bool + end + end + + end + + let(:provider){::DiscourseChat::Provider::DummyProvider} + +end + +RSpec.configure do |rspec| + rspec.include_context "dummy provider" +end \ No newline at end of file diff --git a/spec/lib/discourse_chat/manager_spec.rb b/spec/lib/discourse_chat/manager_spec.rb index 1a910e7..525e761 100644 --- a/spec/lib/discourse_chat/manager_spec.rb +++ b/spec/lib/discourse_chat/manager_spec.rb @@ -1,5 +1,6 @@ require 'rails_helper' require_dependency 'post_creator' +require_relative '../../dummy_provider' RSpec.describe DiscourseChat::Manager do @@ -10,40 +11,12 @@ RSpec.describe DiscourseChat::Manager do let(:second_post) {Fabricate(:post, topic: topic, post_number:2)} describe '.trigger_notifications' do + include_context "dummy provider" + before do SiteSetting.chat_integration_enabled = true end - before(:each) do - module ::DiscourseChat::Provider::DummyProvider - PROVIDER_NAME = "dummy".freeze - PROVIDER_ENABLED_SETTING = :chat_integration_enabled # Tie to main plugin enabled setting - @@sent_messages = [] - @@raise_exception = nil - - def self.trigger_notification(post, channel) - if @@raise_exception - raise @@raise_exception - end - @@sent_messages.push(post: post.id, channel: channel) - end - - def self.sent_messages - @@sent_messages - end - - def self.set_raise_exception(bool) - @@raise_exception = bool - end - end - end - - after(:each) do - ::DiscourseChat::Provider.send(:remove_const, :DummyProvider) - end - - let(:provider) {::DiscourseChat::Provider::DummyProvider} - def create_rule(provider, channel, filter, category_id, tags) # Just shorthand for testing purposes DiscourseChat::Rule.new({provider: provider, channel: channel, filter:filter, category_id:category_id, tags:tags}).save! end