Freshly/spicerack

View on GitHub
rspice/lib/rspice/custom_matchers/extend_module.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# RSpec matcher that tests usages of [Object#extend](https://www.apidock.com/ruby/Object/extend)
#
#     module Nodule; end
#     class Klass
#       extend Nodule
#     end
#
#     RSpec.describe Klass do
#       it { is_expected.to extend_module Nodule }
#     end

RSpec::Matchers.define :extend_module do |module_class|
  match { test_subject.singleton_class.included_modules.include? module_class }
  description { "extended the module #{module_class}" }
  failure_message { |described_class| "expected #{described_class} to extend module #{module_class}" }
  failure_message_when_negated { |described_class| "expected #{described_class} not to extend module #{module_class}" }

  def test_subject
    subject.is_a?(Module) ? subject : subject.class
  end
end