Module: Upkeep::Rails::Testing

Defined in:
lib/upkeep/rails/testing.rb

Instance Method Summary collapse

Instance Method Details

#assert_upkeep_subscription_registered(message = nil) ⇒ Object



6
7
8
9
10
# File 'lib/upkeep/rails/testing.rb', line 6

def assert_upkeep_subscription_registered(message = nil)
  assert_select "script[data-upkeep-subscription]"
  assert Upkeep::Rails.subscriptions.subscriptions.any?,
    message || "expected Upkeep to register at least one subscription"
end

#capture_upkeep_broadcasts(subscription = upkeep_subscription, &block) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/upkeep/rails/testing.rb', line 22

def capture_upkeep_broadcasts(subscription = upkeep_subscription, &block)
  raise ArgumentError, "capture_upkeep_broadcasts requires a block" unless block
  raise NoMethodError, "include ActionCable::TestHelper before calling capture_upkeep_broadcasts" unless respond_to?(:capture_broadcasts)

  captures = {}
  nested = upkeep_stream_names(subscription).reverse_each.reduce(block) do |inner, stream_name|
    proc { captures[stream_name] = capture_broadcasts(stream_name, &inner) }
  end

  nested.call
  captures.values.flatten
end

#upkeep_stream_names(subscription = upkeep_subscription) ⇒ Object

Raises:

  • (ArgumentError)


16
17
18
19
20
# File 'lib/upkeep/rails/testing.rb', line 16

def upkeep_stream_names(subscription = upkeep_subscription)
  raise ArgumentError, "no Upkeep subscription is registered" unless subscription

  ([subscription..fetch(:stream_name)] + subscription..fetch(:shared_stream_names, [])).uniq
end

#upkeep_subscriptionObject



12
13
14
# File 'lib/upkeep/rails/testing.rb', line 12

def upkeep_subscription
  Upkeep::Rails.subscriptions.subscriptions.last
end