module SpecProducer::Producers::Base

Attributes

builder[R]
type[R]

Public Class Methods

new(type) click to toggle source
# File lib/spec_producer/producers/base.rb, line 73
def initialize(type)
  @type = type
  @builder = RspecBuilders::Base.new
end
prepended(base) click to toggle source
# File lib/spec_producer/producers/base.rb, line 66
def self.prepended(base)
  base.extend(ClassMethods)
end

Public Instance Methods

call() click to toggle source
Calls superclass method
# File lib/spec_producer/producers/base.rb, line 78
def call
  raise(NotImplementedError.new('Abstract method.')) unless defined?(super)
  warn "No resources available" if resources.empty?

  resources.each do |resource|
    builder.build do |b|
      b.write(helper_spec_file)
      b.spec resource.name, resource.type do |b|
        super(resource)
      end
    end

    # Footer / Fils Close etc
    if resource.type == 'routing'
      Utils::FileUtils.try_to_create_spec_file(resource.type, "#{resource.name}_routing", builder)
    else
      Utils::FileUtils.try_to_create_spec_file(resource.type.pluralize, resource.name.underscore, builder)
    end

    builder.flush!
  end

  self
rescue StandardError => e
  handle_exception(e)
end
resources() click to toggle source

@Abstract method

Calls superclass method
# File lib/spec_producer/producers/base.rb, line 106
def resources
  raise(NotImplementedError.new('Abstract method.')) unless defined?(super)
  super
end

Private Instance Methods

handle_exception(e) click to toggle source
# File lib/spec_producer/producers/base.rb, line 115
def handle_exception(e)
  raise e if SpecProducer.configuration.raise_errors
  puts "Exception '#{e}' was raised. Skipping model specs production.".colorize(:red)
end
helper_spec_file() click to toggle source
# File lib/spec_producer/producers/base.rb, line 120
def helper_spec_file
  "require \'#{require_helper_string}\'\n"
end
rspec_describe(klass, type) click to toggle source
# File lib/spec_producer/producers/base.rb, line 124
def rspec_describe(klass, type)
  "describe #{klass}, :type => :#{type} do"
end