Sha256: 03076644a8723e43977644b328a5547d71ac627c478ee1fade38b62e737a4670

Contents?: true

Size: 1.39 KB

Versions: 11

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

require "erb"

module Hanami
  module RSpec
    module Generators
      # @since 2.0.0
      # @api private
      class Action
        # @since 2.0.0
        # @api private
        def initialize(fs:, inflector:)
          @fs = fs
          @inflector = inflector
        end

        # @since 2.0.0
        # @api private
        def call(app, slice, controller, action, context: Hanami::CLI::Generators::App::ActionContext.new(inflector, app, slice, controller, action)) # rubocop:disable Layout/LineLength
          if slice
            fs.write(
              "spec/slices/#{slice}/actions/#{controller_directory(controller)}/#{action}_spec.rb",
              t("action_slice_spec.erb", context)
            )
          else
            fs.write(
              "spec/actions/#{controller_directory(controller)}/#{action}_spec.rb",
              t("action_spec.erb", context)
            )
          end
        end

        private

        attr_reader :fs

        attr_reader :inflector

        # @api private
        # @param controller [Array<String>]
        def controller_directory(controller)
          fs.join(controller)
        end

        def template(path, context)
          require "erb"

          ERB.new(
            File.read(__dir__ + "/action/#{path}")
          ).result(context.ctx)
        end

        alias_method :t, :template
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
hanami-rspec-2.2.1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.2.0 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.2.0.rc1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.2.0.beta2 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.2.0.beta1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.1.0 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.1.0.rc2 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.1.0.rc1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.1.0.beta1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.0.1 lib/hanami/rspec/generators/action.rb
hanami-rspec-2.0.0 lib/hanami/rspec/generators/action.rb