diff --git a/app/models/bubble/poppable.rb b/app/models/bubble/poppable.rb index b2043d5d0..c60474d89 100644 --- a/app/models/bubble/poppable.rb +++ b/app/models/bubble/poppable.rb @@ -13,7 +13,10 @@ module Bubble::Poppable end def pop!(user: Current.user) - create_pop!(user: user) unless popped? + unless popped? + create_pop!(user: user) + track_event :popped + end end def unpop diff --git a/app/models/notifier.rb b/app/models/notifier.rb index e6942577e..d61dd1c77 100644 --- a/app/models/notifier.rb +++ b/app/models/notifier.rb @@ -23,7 +23,7 @@ class Notifier end def recipients - raise NotImplementedError + bubble.bucket.users.without(creator) end def bubble diff --git a/app/models/notifier/commented.rb b/app/models/notifier/commented.rb index 02caf607c..178861405 100644 --- a/app/models/notifier/commented.rb +++ b/app/models/notifier/commented.rb @@ -4,10 +4,6 @@ class Notifier::Commented < Notifier "commented on: #{bubble.title}" end - def recipients - bubble.bucket.users.without(creator) - end - def resource event.comment end diff --git a/app/models/notifier/created.rb b/app/models/notifier/created.rb index 9630df5ae..03667f246 100644 --- a/app/models/notifier/created.rb +++ b/app/models/notifier/created.rb @@ -3,8 +3,4 @@ class Notifier::Created < Notifier def body "created: #{bubble.title}" end - - def recipients - bubble.bucket.users.without(creator) - end end diff --git a/app/models/notifier/popped.rb b/app/models/notifier/popped.rb new file mode 100644 index 000000000..26fdd72d3 --- /dev/null +++ b/app/models/notifier/popped.rb @@ -0,0 +1,6 @@ +class Notifier::Popped < Notifier + private + def body + "popped: #{bubble.title}" + end +end diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml index d6be1dbe1..59ceb8621 100644 --- a/test/fixtures/events.yml +++ b/test/fixtures/events.yml @@ -72,3 +72,9 @@ shipping_created: action: created summary: shipping_initial_activity created_at: <%= 1.week.ago %> + +shipping_popped: + creator: kevin + action: popped + summary: shipping_initial_activity + created_at: <%= 2.days.ago %> diff --git a/test/models/bubble/poppable_test.rb b/test/models/bubble/poppable_test.rb index 5ce612309..cff8d1a38 100644 --- a/test/models/bubble/poppable_test.rb +++ b/test/models/bubble/poppable_test.rb @@ -9,7 +9,9 @@ class Bubble::PoppableTest < ActiveSupport::TestCase test "popping" do assert_not bubbles(:logo).popped? - bubbles(:logo).pop! + with_current_user(:kevin) do + bubbles(:logo).pop! + end assert bubbles(:logo).popped? end diff --git a/test/models/notifier/popped_test.rb b/test/models/notifier/popped_test.rb new file mode 100644 index 000000000..ca1289135 --- /dev/null +++ b/test/models/notifier/popped_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +class Notifier::PoppedTest < ActiveSupport::TestCase + test "generate populates the notification details" do + Notifier.for(events(:shipping_popped)).generate + + assert_equal "popped: We need to ship the app", Notification.last.body + end +end diff --git a/test/test_helpers/session_test_helper.rb b/test/test_helpers/session_test_helper.rb index 598afbd80..5666c5b28 100644 --- a/test/test_helpers/session_test_helper.rb +++ b/test/test_helpers/session_test_helper.rb @@ -13,4 +13,12 @@ module SessionTestHelper delete session_url assert_not cookies[:session_token].present? end + + def with_current_user(user) + user = users(user) unless user.is_a? User + Current.session = Session.new(user: user) + yield + ensure + Current.reset_all + end end