Sha256: 5104a88b2bcf3cbb198e8b2ef40b9a91d29155135d7726514109058c7301f469

Contents?: true

Size: 1.98 KB

Versions: 6

Compression:

Stored size: 1.98 KB

Contents

require 'generators/saucy/base'

module Saucy
  module Generators
    class FeaturesGenerator < Base

      desc <<DESC
Description:
    Copy saucy cucumber features files to your application.
DESC

      def copy_feature_files
        directory "features", "features/saucy"
        directory "step_definitions", "features/step_definitions/saucy"
        template "README", "features/saucy/README"
        template "README", "features/step_definitions/saucy/README"
        empty_directory "spec"
        empty_directory "spec/factories"
        template "factories.rb", "spec/factories/saucy_factories.rb"
      end

      def remove_conflicting_files
        remove_file "features/sign_up.feature"
        remove_file "spec/factories/clearance.rb"
        remove_file "test/factories/clearance.rb"
      end

      def create_paths
        paths = <<-PATHS
    when /^the memberships page for the "([^"]+)" account$/
      account = Account.find_by_name!($1)
      account_memberships_path(account)
    when /^the projects page for the "([^"]+)" account$/
      account = Account.find_by_name!($1)
      account_projects_path(account)
    when /settings page for the "([^"]+)" account$/i
      account = Account.find_by_name!($1)
      edit_account_path(account)
    when /settings page$/
      edit_profile_path
    when /dashboard page$/
      accounts_path
    when /sign up page for the "([^"]+)" plan$/i
      plan = Plan.find_by_name!($1)
      new_plan_account_path(plan)
        PATHS

        replace_in_file "features/support/paths.rb",
                        "case page_name",
                        "case page_name\n#{paths}"
      end

      private

      def replace_in_file(relative_path, find, replace)
        path = File.join(destination_root, relative_path)
        contents = IO.read(path)
        unless contents.gsub!(find, replace)
          raise "#{find.inspect} not found in #{relative_path}"
        end
        File.open(path, "w") { |file| file.write(contents) }
      end

    end
  end
end


Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
saucy-0.1.6 lib/generators/saucy/features/features_generator.rb
saucy-0.1.5 lib/generators/saucy/features/features_generator.rb
saucy-0.1.4 lib/generators/saucy/features/features_generator.rb
saucy-0.1.3 lib/generators/saucy/features/features_generator.rb
saucy-0.1.2 lib/generators/saucy/features/features_generator.rb
saucy-0.1.1 lib/generators/saucy/features/features_generator.rb