Sha256: bbecdaf11d8272ad8b31d0fd824fb930d81743283e52515c0290550c132e0669

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module Mongoid
  module Matchers
    module Document
      DOCUMENT   = Mongoid::Document
      PARANOIA   = Mongoid::Paranoia
      VERSIONING = Mongoid::Versioning
      TIMESTAMPS = Mongoid::Timestamps

      class DocumentModuleMatcher
        include Helpers

        def initialize(mod)
          @mod = mod
        end
        
        def matches?(subject)
          class_of(subject).included_modules.include?(@mod)
        end

        def description
          msg = case
                when @mod == DOCUMENT   then ""
                when @mod == PARANOIA   then "paranoid "
                when @mod == VERSIONING then "versioned "
                when @mod == TIMESTAMPS then "timestamped "
                else raise "Unknow Mongoid module #{@mod}"
                end

          "be a #{msg}Mongoid document"
        end
      end

      def be_document
        DocumentModuleMatcher.new(DOCUMENT)
      end

      def be_paranoid
        DocumentModuleMatcher.new(PARANOIA)
      end

      def be_versioned
        DocumentModuleMatcher.new(VERSIONING)
      end

      def be_timestamped
        DocumentModuleMatcher.new(TIMESTAMPS)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongoid-minitest-0.0.3.1 lib/matchers/document/document.rb
mongoid-minitest-0.0.3 lib/matchers/document/document.rb
mongoid-minitest-0.0.2 lib/matchers/document/document.rb