Sha256: 97ce82c33b4505ebb9e26b50edb789041158298ff8c6ab0a1cf0eab8a4c680cc

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require "fileutils"
require "raml-rb"

require "rambo/rspec/spec_file"
require "rambo/rspec/helper_file"

module Rambo
  class DocumentGenerator
    attr_accessor :file, :raml, :options

    class << self
      def generate!(file, options={})
        generator = new(file, options)
        generator.generate_spec_dir!
        generator.generate_matcher_dir!
        generator.generate_examples!
        generator.generate_spec_file!
        generator.generate_rambo_helper!(options)
        generator.generate_matchers!
      end
    end

    def initialize(file, options={})
      @file    = file
      @raml    = Raml::Parser.parse_file(file)
      @options = options
    end

    def generate_spec_dir!
      FileUtils.mkdir_p("spec/contract/output")
    end

    def generate_examples!
      FileUtils.mkdir_p("spec/support/examples")
    end

    def generate_spec_file!
      spec_file_name = file.match(/[^\/]*\.raml$/).to_s.gsub(/\.raml$/, "_spec.rb")
      contents       = Rambo::RSpec::SpecFile.new(raml, options).render
      File.write("spec/contract/#{spec_file_name}", contents)
    end

    def generate_rambo_helper!
      Rambo::RSpec::HelperFile.new(
        template_path: File.expand_path("../rspec/templates/rambo_helper_file_template.erb", __FILE__),
        file_path:     "spec/rambo_helper.rb",
        raml:          raml,
        options:       options
      ).generate
    end

    def generate_matcher_dir!
      FileUtils.mkdir_p("spec/support/matchers")
    end

    def generate_matchers!
      Rambo::RSpec::HelperFile.new(
        template_path: File.expand_path("../rspec/templates/matcher_file_template.erb", __FILE__),
        file_path: "spec/support/matchers/rambo_matchers.rb", raml: nil
      ).generate
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rambo_ruby-0.3.2 lib/rambo/document_generator.rb
rambo_ruby-0.3.1 lib/rambo/document_generator.rb