Sha256: c33e7fa0c04bfffb93e60bd5e121559470e3ad16ee88332a12159429c24ed30d

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

require "tset/generators/abstract"
require "tset/analyzers/model"
require "tset/writers/model_test"
require "active_support/inflector"

module Tset
  module Generators
    #
    # Generates blank test files in the application
    # Uses analyzers, translators, and writers to insert appropriate tests into the files.
    #
    # @param command [Tset::Commands::Generate] An instance of generate command
    #
    class ModelTest < Abstract

      attr_reader :model_name

      def initialize(command)
        super
        @model_name = name.classify

        cli.class.source_root(source)
      end

      def start
        assert_model_exists!

        opts = {
          model_name: @model_name
        }

        case framework
        when 'rspec'
          cli.template(source.join('model_spec.rspec.tt'), target.join("spec/models/#{ name }_spec.rb"), opts)
        when 'minitest'
          cli.template(source.join('model_test.minitest.tt'), target.join("test/models/#{ name }_test.rb"), opts)
        end

        testables = Tset::Analyzers::Model.new(name).start
        Tset::Writers::ModelTest.new(name, testables, framework).start!
      end

      private

      def assert_model_exists!
        unless target.join("app/models/#{ name }.rb").exist?
          raise Tset::Commands::Generate::Error.new("Unknown model: `#{ name }`")
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tset-0.0.2 lib/tset/generators/model_test.rb
tset-0.0.1 lib/tset/generators/model_test.rb