class Marso::FeatureFactory

Public Instance Methods

create_feature_file(description={}, root=nil) click to toggle source
# File lib/marso/domain/feature/feature_factory.rb, line 12
def create_feature_file(description={}, root=nil)
        raise ArgumentError, "Feature's name is required" unless description[:name]
        id = description[:id] || SecureRandom.hex(3)
        name = description[:name]
        in_order_to = description[:in_order_to] || ""
        as_a = description[:as_a] || ""
        i = description[:i] || ""

        template = get_template(Pathname("../feature_template.rb").expand_path(__FILE__))
                .gsub(/#\{id\}/, id)
                .gsub(/#\{name\}/, name)
                .gsub(/#\{in_order_to\}/, in_order_to)
                .gsub(/#\{as_a\}/, as_a)
                .gsub(/#\{i\}/, i)

        fname = name.downcase.gsub(' ', '_')
        feature_file = "#{fname}.rb"
        root = root || File.join(Dir.pwd, fname)

        FileUtils.mkdir root unless File.directory? root
        FileUtils.mkdir File.join(root, "Stories")
        FileUtils.mkdir File.join(root, "Scenarios")

        dest = File.join(root, feature_file)
        File.open(dest, "w") do |f|
                f.write(template)
        end

        return feature_file
end