tdc 0.3.3 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.rubocop.yml +8 -69
 - data/CHANGELOG.md +31 -2
 - data/README.md +1 -1
 - data/images/Tdc.png +0 -0
 - data/lib/tdc.rb +2 -1
 - data/lib/tdc/data_definition_file_reader.rb +2 -0
 - data/lib/tdc/definition_resolvers/tag_resolver.rb +2 -0
 - data/lib/tdc/generators/atx_context_factory.rb +20 -0
 - data/lib/tdc/generators/catalog_entries.rb +6 -0
 - data/lib/tdc/generators/configurable_generator.rb +4 -5
 - data/lib/tdc/generators/definition_sourcable.rb +1 -1
 - data/lib/tdc/generators/generation_context.rb +15 -0
 - data/lib/tdc/generators/generator_base.rb +6 -4
 - data/lib/tdc/in_memory_data_definition.rb +2 -0
 - data/lib/tdc/version.rb +1 -1
 - data/tdc.gemspec +1 -1
 - metadata +6 -5
 - data/lib/tdc/generators/singular_generator.rb +0 -39
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b38de678846606fd9e8563342d256585f38ff34a0cc4f969a3e5275e8d2c4d7e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f6158ca091edf735897be992e53b6d106eac7d0de863725fa2fd65eab1f4ddf8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d88d2c5bf021d945861c2e26ebc1336fdc9ae418cd74b01ef7135f8c9edcfbf7cb29dfe9dbd99b834d7a13572338cd6bd5587bb8a08baf6e1ed39a9db3ce8691
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e30dfc82648765df615d1853861f48c7f204aea8ae375b1fcd48127fba4853fa316c216cc41cfcb2766bd2bf9b7a4cdc83e500909a0ad6656e96237db22f1353
         
     | 
    
        data/.rubocop.yml
    CHANGED
    
    | 
         @@ -2,39 +2,19 @@ require: 
     | 
|
| 
       2 
2 
     | 
    
         
             
              - rubocop-rspec
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            AllCops:
         
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
      
 5 
     | 
    
         
            +
              NewCops: enable
         
     | 
| 
      
 6 
     | 
    
         
            +
              TargetRubyVersion: 2.6
         
     | 
| 
       6 
7 
     | 
    
         | 
| 
       7 
8 
     | 
    
         
             
              Exclude:
         
     | 
| 
       8 
9 
     | 
    
         
             
                - 'bin/**/*'
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            Layout/ 
     | 
| 
       11 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            Metrics/LineLength:
         
     | 
| 
      
 11 
     | 
    
         
            +
            Layout/LineLength:
         
     | 
| 
       14 
12 
     | 
    
         
             
              Max: 120
         
     | 
| 
       15 
13 
     | 
    
         | 
| 
       16 
14 
     | 
    
         
             
            # Rubocop and I cannot agree.
         
     | 
| 
       17 
15 
     | 
    
         
             
            Layout/MultilineMethodCallBraceLayout:
         
     | 
| 
       18 
16 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       19 
17 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            Layout/SpaceAroundMethodCallOperator:
         
     | 
| 
       21 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            Lint/DeprecatedOpenSSLConstant:
         
     | 
| 
       24 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            Lint/DuplicateElsifCondition:
         
     | 
| 
       27 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            Lint/MixedRegexpCaptureTypes:
         
     | 
| 
       30 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            Lint/RaiseException:
         
     | 
| 
       33 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            Lint/StructNewOverride:
         
     | 
| 
       36 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
18 
     | 
    
         
             
            Metrics/BlockLength:
         
     | 
| 
       39 
19 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       40 
20 
     | 
    
         | 
| 
         @@ -68,15 +48,6 @@ RSpec/MultipleExpectations: 
     | 
|
| 
       68 
48 
     | 
    
         
             
            RSpec/SubjectStub:
         
     | 
| 
       69 
49 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       70 
50 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
            Style/AccessorGrouping:
         
     | 
| 
       72 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
            Style/ArrayCoercion:
         
     | 
| 
       75 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            Style/BisectedAttrAccessor:
         
     | 
| 
       78 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
51 
     | 
    
         
             
            Style/BlockDelimiters:
         
     | 
| 
       81 
52 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       82 
53 
     | 
    
         
             
              EnforcedStyle: line_count_based
         
     | 
| 
         @@ -84,56 +55,24 @@ Style/BlockDelimiters: 
     | 
|
| 
       84 
55 
     | 
    
         
             
                - 'let'
         
     | 
| 
       85 
56 
     | 
    
         
             
                - 'subject'
         
     | 
| 
       86 
57 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
            Style/CaseLikeIf:
         
     | 
| 
       88 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
58 
     | 
    
         
             
            Style/Documentation:
         
     | 
| 
       91 
59 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       92 
60 
     | 
    
         | 
| 
       93 
61 
     | 
    
         
             
            Style/EmptyMethod:
         
     | 
| 
       94 
62 
     | 
    
         
             
              EnforcedStyle: expanded
         
     | 
| 
       95 
63 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
            Style/ExponentialNotation:
         
     | 
| 
       97 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
64 
     | 
    
         
             
            # We can ignore this small performance improvement.
         
     | 
| 
       100 
65 
     | 
    
         
             
            Style/FrozenStringLiteralComment:
         
     | 
| 
       101 
66 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       102 
67 
     | 
    
         | 
| 
       103 
     | 
    
         
            -
            Style/HashAsLastArrayItem:
         
     | 
| 
       104 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
            Style/HashEachMethods:
         
     | 
| 
       107 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
            Style/HashLikeCase:
         
     | 
| 
       110 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
            Style/HashTransformKeys:
         
     | 
| 
       113 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
            Style/HashTransformValues:
         
     | 
| 
       116 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
68 
     | 
    
         
             
            # We like to use the hash rocket in rake files.
         
     | 
| 
       119 
69 
     | 
    
         
             
            Style/HashSyntax:
         
     | 
| 
       120 
70 
     | 
    
         
             
              Exclude:
         
     | 
| 
       121 
71 
     | 
    
         
             
                - 'Rakefile'
         
     | 
| 
       122 
72 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
            Style/RedundantFetchBlock:
         
     | 
| 
       127 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            Style/RedundantFileExtensionInRequire:
         
     | 
| 
       130 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
            Style/RedundantRegexpCharacterClass:
         
     | 
| 
       133 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
       135 
     | 
    
         
            -
            Style/RedundantRegexpEscape:
         
     | 
| 
       136 
     | 
    
         
            -
              Enabled: true
         
     | 
| 
      
 73 
     | 
    
         
            +
            # We are not going to optimize by freezing strings.
         
     | 
| 
      
 74 
     | 
    
         
            +
            Style/MutableConstant:
         
     | 
| 
      
 75 
     | 
    
         
            +
              Enabled: false
         
     | 
| 
       137 
76 
     | 
    
         | 
| 
       138 
77 
     | 
    
         
             
            # No need to mention StandardError.
         
     | 
| 
       139 
78 
     | 
    
         
             
            Style/RescueStandardError:
         
     | 
| 
         @@ -150,6 +89,6 @@ Style/StringLiterals: 
     | 
|
| 
       150 
89 
     | 
    
         
             
            Style/SymbolArray:
         
     | 
| 
       151 
90 
     | 
    
         
             
              Enabled: false
         
     | 
| 
       152 
91 
     | 
    
         | 
| 
       153 
     | 
    
         
            -
            #  
     | 
| 
       154 
     | 
    
         
            -
            Style/ 
     | 
| 
      
 92 
     | 
    
         
            +
            # I prefer not to use %w or %W for an array of words.
         
     | 
| 
      
 93 
     | 
    
         
            +
            Style/WordArray:
         
     | 
| 
       155 
94 
     | 
    
         
             
              Enabled: false
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -6,6 +6,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## [Unreleased]
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            ## [0.3.7] - 2020-08-10
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            #### New Features
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            - Register a context with the AtxContextFactory
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            ## [0.3.6.1] - 2020-08-10
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            - Add the AtxContextFactory abstraction
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            ## [0.3.6] - 2020-08-06
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            #### Breaking Changes
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            - Drop the `SingularGenerator` abstraction
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ## [0.3.5] - 2020-08-06
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            - Add the `single_entry` method to `CatalogEntries`
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            #### Breaking Changes
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            - Drop the `with_definition` method from `SingularGenerator`
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ## [0.3.4] - 2020-08-05
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            #### Breaking Changes
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            - Introduce the `GenerationContext` abstraction
         
     | 
| 
      
 38 
     | 
    
         
            +
            - All generators are initialized with an instance of `Tdc::Generators::GenerationContext`
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       9 
40 
     | 
    
         
             
            ## [0.3.3] - 2020-08-04
         
     | 
| 
       10 
41 
     | 
    
         | 
| 
       11 
42 
     | 
    
         
             
            - Add the `empty?` method to `CatalogEntries`
         
     | 
| 
         @@ -55,5 +86,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 
     | 
|
| 
       55 
86 
     | 
    
         
             
            #### New Features
         
     | 
| 
       56 
87 
     | 
    
         | 
| 
       57 
88 
     | 
    
         
             
            - Avoid all PackManager dependencies
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            **Extension Points**
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            Define your own test data generators by inheriting from ```StandardGenerator 
     | 
| 
      
 7 
     | 
    
         
            +
            Define your own test data generators by inheriting from ```StandardGenerator```. Best practice is to define an ```ApplicationStandardGenerator``` and have all other generators inherit from it.
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            Define your own definition resolvers by inheriting from ```DefinitionResolver```. Best practice is to define an ```ApplicationDefinitionResolver``` and all other definition resolvers inherit from it.
         
     | 
| 
       10 
10 
     | 
    
         | 
    
        data/images/Tdc.png
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/tdc.rb
    CHANGED
    
    | 
         @@ -19,6 +19,8 @@ require "tdc/with_indifferent_access_decorator" 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            # Generators
         
     | 
| 
       21 
21 
     | 
    
         
             
            require "tdc/generators"
         
     | 
| 
      
 22 
     | 
    
         
            +
            require "tdc/generators/atx_context_factory"
         
     | 
| 
      
 23 
     | 
    
         
            +
            require "tdc/generators/generation_context"
         
     | 
| 
       22 
24 
     | 
    
         | 
| 
       23 
25 
     | 
    
         
             
            # Current Catalog
         
     | 
| 
       24 
26 
     | 
    
         
             
            require "tdc/generators/catalog_entries"
         
     | 
| 
         @@ -30,7 +32,6 @@ require "tdc/generators/definition_sourcable" 
     | 
|
| 
       30 
32 
     | 
    
         
             
            # Generator Hierarchy
         
     | 
| 
       31 
33 
     | 
    
         
             
            require "tdc/generators/generator_base"
         
     | 
| 
       32 
34 
     | 
    
         
             
            require "tdc/generators/configurable_generator"
         
     | 
| 
       33 
     | 
    
         
            -
            require "tdc/generators/singular_generator"
         
     | 
| 
       34 
35 
     | 
    
         
             
            require "tdc/generators/standard_generator"
         
     | 
| 
       35 
36 
     | 
    
         | 
| 
       36 
37 
     | 
    
         
             
            # Definition Resolvers
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Tdc
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Generators
         
     | 
| 
      
 3 
     | 
    
         
            +
                #
         
     | 
| 
      
 4 
     | 
    
         
            +
                # Knows a class instance that supplies the instance_eval context for interpreting _atx attribute values.
         
     | 
| 
      
 5 
     | 
    
         
            +
                #
         
     | 
| 
      
 6 
     | 
    
         
            +
                class AtxContextFactory
         
     | 
| 
      
 7 
     | 
    
         
            +
                  include Singleton
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  attr_reader :context
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  def self.register(context:)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    AtxContextFactory.instance.instance_variable_set(:@context, context)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def initialize
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @context = Time.zone
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -3,8 +3,6 @@ module Tdc 
     | 
|
| 
       3 
3 
     | 
    
         
             
                #
         
     | 
| 
       4 
4 
     | 
    
         
             
                # Knows how to provide a configurable instance definition.
         
     | 
| 
       5 
5 
     | 
    
         
             
                #
         
     | 
| 
       6 
     | 
    
         
            -
                # Shared implementation between the StandardGenerator and the SingularGenerator abstract classes.
         
     | 
| 
       7 
     | 
    
         
            -
                #
         
     | 
| 
       8 
6 
     | 
    
         
             
                class ConfigurableGenerator < Tdc::Generators::GeneratorBase
         
     | 
| 
       9 
7 
     | 
    
         
             
                  include Tdc::Generators::DefinitionSourcable
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
         @@ -44,9 +42,6 @@ module Tdc 
     | 
|
| 
       44 
42 
     | 
    
         
             
                  def run_atx_resolvers(instance_definition)
         
     | 
| 
       45 
43 
     | 
    
         
             
                    atx_definitions = instance_definition.select { |k, _v| /_atx$/ =~ k }
         
     | 
| 
       46 
44 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                    # ARM (2020-08-04): Move all the way out so that all generators use the same atx_context.
         
     | 
| 
       48 
     | 
    
         
            -
                    atx_context = Time.zone
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
45 
     | 
    
         
             
                    atx_definitions.each do |k, v|
         
     | 
| 
       51 
46 
     | 
    
         
             
                      # Remove the original _atx attribute.
         
     | 
| 
       52 
47 
     | 
    
         
             
                      instance_definition.delete(k)
         
     | 
| 
         @@ -55,6 +50,10 @@ module Tdc 
     | 
|
| 
       55 
50 
     | 
    
         
             
                      instance_definition[k.delete_suffix("x")] = atx_context.instance_eval(v)
         
     | 
| 
       56 
51 
     | 
    
         
             
                    end
         
     | 
| 
       57 
52 
     | 
    
         
             
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  def atx_context
         
     | 
| 
      
 55 
     | 
    
         
            +
                    Tdc::Generators::AtxContextFactory.instance.context
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
       58 
57 
     | 
    
         
             
                end
         
     | 
| 
       59 
58 
     | 
    
         
             
              end
         
     | 
| 
       60 
59 
     | 
    
         
             
            end
         
     | 
| 
         @@ -38,7 +38,7 @@ module Tdc 
     | 
|
| 
       38 
38 
     | 
    
         
             
                    definition_source&.key?(key) ? definition_source.fetch(key) : super
         
     | 
| 
       39 
39 
     | 
    
         
             
                  end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                  def respond_to_missing?(method, include_all = false)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  def respond_to_missing?(method, include_all = false) # rubocop:disable Style/OptionalBooleanParameter
         
     | 
| 
       42 
42 
     | 
    
         
             
                    key = transform_method_to_definition_source_key(method)
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                    definition_source&.key?(key) ? true : super
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Tdc
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Generators
         
     | 
| 
      
 3 
     | 
    
         
            +
                #
         
     | 
| 
      
 4 
     | 
    
         
            +
                # Knows all the parameters that define the context for generation.
         
     | 
| 
      
 5 
     | 
    
         
            +
                #
         
     | 
| 
      
 6 
     | 
    
         
            +
                class GenerationContext
         
     | 
| 
      
 7 
     | 
    
         
            +
                  attr_reader :current_catalog, :data_definition
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  def initialize(current_catalog:, data_definition:)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @current_catalog = current_catalog
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @data_definition = data_definition
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -4,11 +4,13 @@ module Tdc 
     | 
|
| 
       4 
4 
     | 
    
         
             
                # Abstract base class for all Test Data Catalog generators.
         
     | 
| 
       5 
5 
     | 
    
         
             
                #
         
     | 
| 
       6 
6 
     | 
    
         
             
                class GeneratorBase
         
     | 
| 
       7 
     | 
    
         
            -
                  attr_reader : 
     | 
| 
      
 7 
     | 
    
         
            +
                  attr_reader :generation_context
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                   
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
                  # ARM (2020-08-05): For backwards compatibility. Consider removing.
         
     | 
| 
      
 10 
     | 
    
         
            +
                  delegate :current_catalog, :data_definition, to: :generation_context
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  def initialize(generation_context)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    @generation_context = generation_context
         
     | 
| 
       12 
14 
     | 
    
         
             
                  end
         
     | 
| 
       13 
15 
     | 
    
         | 
| 
       14 
16 
     | 
    
         
             
                  def generate
         
     | 
    
        data/lib/tdc/version.rb
    CHANGED
    
    
    
        data/tdc.gemspec
    CHANGED
    
    | 
         @@ -32,7 +32,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
              spec.add_development_dependency "rake", ">= 12.1", "< 13.1"
         
     | 
| 
       34 
34 
     | 
    
         
             
              spec.add_development_dependency "rspec", ">= 3.9", "< 4.0"
         
     | 
| 
       35 
     | 
    
         
            -
              spec.add_development_dependency "rubocop", "~> 0. 
     | 
| 
      
 35 
     | 
    
         
            +
              spec.add_development_dependency "rubocop", "~> 0.89"
         
     | 
| 
       36 
36 
     | 
    
         
             
              spec.add_development_dependency "rubocop-rspec", "~> 1.42"
         
     | 
| 
       37 
37 
     | 
    
         
             
              spec.add_development_dependency "simplecov", "~> 0.17"
         
     | 
| 
       38 
38 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: tdc
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.3. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.7
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Alistair McKinnell
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020-08- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-08-11 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: activesupport
         
     | 
| 
         @@ -70,14 +70,14 @@ dependencies: 
     | 
|
| 
       70 
70 
     | 
    
         
             
                requirements:
         
     | 
| 
       71 
71 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       72 
72 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       73 
     | 
    
         
            -
                    version: '0. 
     | 
| 
      
 73 
     | 
    
         
            +
                    version: '0.89'
         
     | 
| 
       74 
74 
     | 
    
         
             
              type: :development
         
     | 
| 
       75 
75 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       76 
76 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       77 
77 
     | 
    
         
             
                requirements:
         
     | 
| 
       78 
78 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       79 
79 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       80 
     | 
    
         
            -
                    version: '0. 
     | 
| 
      
 80 
     | 
    
         
            +
                    version: '0.89'
         
     | 
| 
       81 
81 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       82 
82 
     | 
    
         
             
              name: rubocop-rspec
         
     | 
| 
       83 
83 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -133,12 +133,13 @@ files: 
     | 
|
| 
       133 
133 
     | 
    
         
             
            - lib/tdc/definition_resolvers/tag_resolver.rb
         
     | 
| 
       134 
134 
     | 
    
         
             
            - lib/tdc/fatal_error.rb
         
     | 
| 
       135 
135 
     | 
    
         
             
            - lib/tdc/generators.rb
         
     | 
| 
      
 136 
     | 
    
         
            +
            - lib/tdc/generators/atx_context_factory.rb
         
     | 
| 
       136 
137 
     | 
    
         
             
            - lib/tdc/generators/catalog_entries.rb
         
     | 
| 
       137 
138 
     | 
    
         
             
            - lib/tdc/generators/configurable_generator.rb
         
     | 
| 
       138 
139 
     | 
    
         
             
            - lib/tdc/generators/definition_resolvable.rb
         
     | 
| 
       139 
140 
     | 
    
         
             
            - lib/tdc/generators/definition_sourcable.rb
         
     | 
| 
      
 141 
     | 
    
         
            +
            - lib/tdc/generators/generation_context.rb
         
     | 
| 
       140 
142 
     | 
    
         
             
            - lib/tdc/generators/generator_base.rb
         
     | 
| 
       141 
     | 
    
         
            -
            - lib/tdc/generators/singular_generator.rb
         
     | 
| 
       142 
143 
     | 
    
         
             
            - lib/tdc/generators/standard_generator.rb
         
     | 
| 
       143 
144 
     | 
    
         
             
            - lib/tdc/in_memory_data_definition.rb
         
     | 
| 
       144 
145 
     | 
    
         
             
            - lib/tdc/missing_override_error.rb
         
     | 
| 
         @@ -1,39 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Tdc
         
     | 
| 
       2 
     | 
    
         
            -
              module Generators
         
     | 
| 
       3 
     | 
    
         
            -
                #
         
     | 
| 
       4 
     | 
    
         
            -
                # Abstract class for defining generators that define a single model instance.
         
     | 
| 
       5 
     | 
    
         
            -
                #
         
     | 
| 
       6 
     | 
    
         
            -
                # See also StandardGenerator.
         
     | 
| 
       7 
     | 
    
         
            -
                #
         
     | 
| 
       8 
     | 
    
         
            -
                class SingularGenerator < Tdc::Generators::ConfigurableGenerator
         
     | 
| 
       9 
     | 
    
         
            -
                  def with_definition(additional_definitions)
         
     | 
| 
       10 
     | 
    
         
            -
                    @additional_definitions = additional_definitions.stringify_keys.reject { |_, v| v == :missing_definition }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                    self
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  def generate
         
     | 
| 
       16 
     | 
    
         
            -
                    configure_instance_definition(singular_instance_definition.merge(additional_definitions))
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    run_resolvers_and_generate_instance
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  private
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  def additional_definitions
         
     | 
| 
       24 
     | 
    
         
            -
                    @additional_definitions || {}
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  def singular_instance_definition
         
     | 
| 
       28 
     | 
    
         
            -
                    all_instance_definitions = instance_definitions
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                    if all_instance_definitions.many?
         
     | 
| 
       31 
     | 
    
         
            -
                      raise Tdc::FatalError, "A singular generator only generates a single model instance"
         
     | 
| 
       32 
     | 
    
         
            -
                    end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                    # Delete the tag so that the models do not need to filter it out.
         
     | 
| 
       35 
     | 
    
         
            -
                    all_instance_definitions.first.except("tag")
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
            end
         
     |