Sha256: 7ba63b9530d16bc3db5c96af1a8aedd5c88e8ec2f93e00d4114dcea239b50ad9

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

require 'rails-app-spec'

module RSpec::RubyContentMatchers 
  module LicenseFile  
    class HaveLicenseFile
      include ::RailsAssist::Artifact::Directory
      include ::RailsAssist::Directory
      
      attr_reader :name
  
      def initialize name
        @name = name
      end

      def license_dir
        File.join(app_dir, 'licenses')
      end

      def license_file name
        File.join(license_dir, "#{name}_license.rb")
      end

      def matches? obj, &block
        file_name = license_file(name)
        found = File.file? file_name
        yield File.read(file_name) if block && found
        found
      end 
      
      def failure_message
        "No license file found for #{name} in #{license_dir} as expected"
      end   
      
      def negative_failure_message
        "License file #{name} found in #{license_dir} but was not expected"
      end 
      
    end

    def have_license_file name
      HaveLicenseFile.new name
    end

    class HaveLicenseFiles
      include ::RailsAssist::Artifact::Directory
      include ::RailsAssist::Directory
      
      attr_reader :names
  
      def initialize *names
        @names = names.flatten
      end

      def license_dir
        File.join(app_dir, 'licenses')
      end

      def license_file name
        File.join(license_dir, "#{name}_license.rb")
      end

      def matches? obj, &block
        names.flatten.each do |name|
          return false if !File.file? license_file(name)
        end        
        true
      end 
      
      def failure_message
        "License files #{names} not found in #{license_dir} as expected"
      end   
      
      def negative_failure_message
        "License files #{names} found in #{license_dir} but was not expected"
      end 
    end

    def have_license_files *names
      HaveLicenseFiles.new names
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cancan-permits-0.3.12 lib/cancan-permits/rspec/matchers/have_license_file.rb