module ActiveSupport::Testing::NotificationAssertions
Открытые методы экземпляра
# File activesupport/lib/active_support/testing/notification_assertions.rb, line 66
def assert_no_notifications(pattern = nil, &block)
notifications = capture_notifications(pattern, &block)
error_message = if pattern
"Expected no notifications for #{pattern} but found #{notifications.size}"
else
"Expected no notifications but found #{notifications.size}"
end
assert_empty(notifications, error_message)
end Проверяет, что для заданного pattern не было отправлено ни одного уведомления.
Вы можете проверить, что уведомления не отправлялись, передав шаблон, который может быть строкой или регулярным выражением, и блок. Если во время выполнения блока не будет отправлено ни одного подходящего уведомления, проверка пройдёт.
assert_no_notifications("post.submitted") do
post.destroy # => emits non-matching notification
end
# File activesupport/lib/active_support/testing/notification_assertions.rb, line 28
def assert_notification(pattern, payload = nil, &block)
notifications = capture_notifications(pattern, &block)
assert_not_empty(notifications, "No #{pattern} notifications were found")
return notifications.first if payload.nil?
notification = notifications.find { |notification| notification.payload.slice(*payload.keys) == payload }
assert_not_nil(notification, "No #{pattern} notification with payload #{payload} was found")
notification
end Проверяет, что было отправлено уведомление с заданным pattern и необязательным payload.
Вы можете проверить, что уведомление было отправлено, передав шаблон, который может быть строкой или регулярным выражением, необязательные данные и блок. Если во время выполнения блока будет отправлено подходящее уведомление, проверка пройдёт, и уведомление будет возвращено.
Обратите внимание, что данные сопоставляются по подмножеству: уведомление должно содержать как минимум указанные ключи и значения, но может содержать и дополнительные.
assert_notification("post.submitted", title: "Cool Post") do
post.submit(title: "Cool Post", body: "Cool Body") # => emits matching notification
end
Используя возвращённое уведомление, вы можете выполнять более настраиваемые проверки.
notification = assert_notification("post.submitted", title: "Cool Post") do
ActiveSupport::Notifications.instrument("post.submitted", title: "Cool Post", body: Body.new("Cool Body"))
end
assert_instance_of(Body, notification.payload[:body])
# File activesupport/lib/active_support/testing/notification_assertions.rb, line 51
def assert_notifications_count(pattern, count, &block)
actual_count = capture_notifications(pattern, &block).count
assert_equal(count, actual_count, "Expected #{count} instead of #{actual_count} notifications for #{pattern}")
end Проверяет количество уведомлений, отправленных с заданным pattern.
Вы можете проверить количество отправленных уведомлений, передав шаблон, который может быть строкой или регулярным выражением, количество и блок. Во время выполнения блока будет подсчитано число отправленных подходящих уведомлений. После завершения блока проверка пройдёт, если количество совпадёт.
assert_notifications_count("post.submitted", 1) do
post.submit(title: "Cool Post") # => emits matching notification
end
# File activesupport/lib/active_support/testing/notification_assertions.rb, line 85
def capture_notifications(pattern = nil, &block)
notifications = []
ActiveSupport::Notifications.subscribed(->(n) { notifications << n }, pattern, &block)
notifications
end Перехватывает отправленные уведомления, при необходимости фильтруя их по pattern.
Вы можете перехватывать отправленные уведомления, при необходимости фильтруя их по шаблону, который может быть строкой или регулярным выражением, и блоку.
notifications = capture_notifications("post.submitted") do
post.submit(title: "Cool Post") # => emits matching notification
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.