Sha256: 40a32e5ca796537d06ec5dfa34410b449ce4b77f22a62111c2e28d2226675d8a

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

require_relative 'naming'
require_relative 'special_cases'

module USCoreTestKit
  class Generator
    class SuiteGenerator
      class << self
        def generate(ig_metadata)
          new(ig_metadata).generate
        end
      end

      attr_accessor :ig_metadata

      def initialize(ig_metadata)
        self.ig_metadata = ig_metadata
      end

      def template
        @template ||= File.read(File.join(__dir__, 'templates', 'suite.rb.erb'))
      end

      def output
        @output ||= ERB.new(template).result(binding)
      end

      def base_output_file_name
        "us_core_test_suite.rb"
      end

      def class_name
        "USCoreTestSuite"
      end

      def output_file_name
        File.join(__dir__, '..', 'generated', base_output_file_name)
      end

      def suite_id
        'us_core_311'
      end

      def title
        'US Core 3.1.1'
      end

      def generate
        File.open(output_file_name, 'w') { |f| f.write(output) }
      end

      def groups
        ig_metadata.ordered_groups
          .reject { |group| SpecialCases.exclude_resource? group.resource }
      end

      def group_id_list
        @group_id_list ||=
          groups.map(&:id)
      end

      def group_file_list
        @group_file_list ||=
          groups.map { |group| group.file_name.delete_suffix('.rb') }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
us_core_test_kit-0.1.1 lib/us_core_test_kit/generator/suite_generator.rb
us_core_test_kit-0.1.0 lib/us_core_test_kit/generator/suite_generator.rb