rom-factory 0.7.0 → 0.8.0
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/.codeclimate.yml +17 -4
- data/.github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md +10 -0
- data/.github/ISSUE_TEMPLATE/----please-don-t-report-feature-requests-via-issues.md +10 -0
- data/.github/ISSUE_TEMPLATE/---a-detailed-bug-report.md +30 -0
- data/.gitignore +1 -0
- data/.travis.yml +7 -6
- data/CHANGELOG.md +8 -0
- data/Gemfile +8 -5
- data/Rakefile +2 -0
- data/benchmarks/basic.rb +14 -18
- data/lib/rom-factory.rb +2 -0
- data/lib/rom/factory.rb +2 -0
- data/lib/rom/factory/attribute_registry.rb +2 -0
- data/lib/rom/factory/attributes.rb +2 -0
- data/lib/rom/factory/attributes/association.rb +2 -0
- data/lib/rom/factory/attributes/callable.rb +2 -0
- data/lib/rom/factory/attributes/sequence.rb +2 -0
- data/lib/rom/factory/attributes/value.rb +2 -0
- data/lib/rom/factory/builder.rb +2 -0
- data/lib/rom/factory/builder/persistable.rb +2 -0
- data/lib/rom/factory/constants.rb +2 -0
- data/lib/rom/factory/dsl.rb +2 -0
- data/lib/rom/factory/factories.rb +2 -0
- data/lib/rom/factory/registry.rb +2 -0
- data/lib/rom/factory/sequences.rb +2 -0
- data/lib/rom/factory/tuple_evaluator.rb +10 -1
- data/lib/rom/factory/version.rb +3 -1
- data/rom-factory.gemspec +4 -2
- metadata +10 -14
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d518c3e2f7f686c9366ef1c54ba7a2c33d1858fd3507dde56b49a1f1e9c49efd
         | 
| 4 | 
            +
              data.tar.gz: 7fdf505e789b85006f9dd639b1bc15b1ed76a2129144dd965494ab0853693ffa
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 90d96b038566692c001c2eabdee291276ec604910db01343b912d4c56690a6564278183f1315d87d6de42dc7716a4a3f26518dcff6f1ffcad1f3301f1553a737
         | 
| 7 | 
            +
              data.tar.gz: 2ea5c2473d2a35b109978079f8ac71c3ea375b19643b787bc0c71b9549b03cfb3e09173fb33b30b1465ff85defabe588a075fc4e6857040d77fdc59fec9c04fe
         | 
    
        data/.codeclimate.yml
    CHANGED
    
    | @@ -1,6 +1,19 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            version: "2"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            prepare:
         | 
| 4 | 
            +
              fetch:
         | 
| 5 | 
            +
              - url: "https://raw.githubusercontent.com/rom-rb/devtools/master/.rubocop.yml"
         | 
| 6 | 
            +
                path: ".rubocop.yml"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            exclude_patterns:
         | 
| 9 | 
            +
              - "benchmarks/"
         | 
| 10 | 
            +
              - "examples/"
         | 
| 11 | 
            +
              - "spec/"
         | 
| 12 | 
            +
              - "*/spec/"
         | 
| 13 | 
            +
              - "*/examples/"
         | 
| 14 | 
            +
              - "*/benchmarks/"
         | 
| 15 | 
            +
              - "!*.rb"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            plugins:
         | 
| 2 18 | 
             
              rubocop:
         | 
| 3 19 | 
             
                enabled: true
         | 
| 4 | 
            -
            ratings:
         | 
| 5 | 
            -
              paths:
         | 
| 6 | 
            -
                - lib/**
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            name: "\U0001F41B A detailed bug report"
         | 
| 3 | 
            +
            about: Report a bug
         | 
| 4 | 
            +
            title: ''
         | 
| 5 | 
            +
            labels: bug
         | 
| 6 | 
            +
            assignees: ''
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            ---
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            **Before you submit this: WE ONLY ACCEPT BUG REPORTS**
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            For more information see [our contribution guidelines](https://github.com/rom-rb/rom/blob/master/CONTRIBUTING.md)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            **Describe the bug**
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            A clear and concise description of what the bug is.
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            **To Reproduce**
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            Provide detailed steps to reproduce, an executable script would be best.
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            **Expected behavior**
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            A clear and concise description of what you expected to happen.
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            **Your environment**
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            - Affects my production application: **YES/NO**
         | 
| 29 | 
            +
            - Ruby version: ...
         | 
| 30 | 
            +
            - OS: ...
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,19 +1,20 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 | 
            -
             | 
| 2 | 
            +
             | 
| 3 3 | 
             
            services:
         | 
| 4 4 | 
             
              - postgresql
         | 
| 5 5 | 
             
              - mysql
         | 
| 6 6 | 
             
            bundler_args: --without tools benchmarks
         | 
| 7 | 
            +
            before_install:
         | 
| 8 | 
            +
              - gem install bundler
         | 
| 7 9 | 
             
            before_script:
         | 
| 8 10 | 
             
              - psql -c 'create database rom_factory;' -U postgres
         | 
| 9 | 
            -
            script: "bundle exec rake spec"
         | 
| 10 11 | 
             
            after_success:
         | 
| 11 12 | 
             
              - '[ -d coverage ] && bundle exec codeclimate-test-reporter'
         | 
| 12 13 | 
             
            rvm:
         | 
| 13 | 
            -
              - 2. | 
| 14 | 
            -
              - 2. | 
| 15 | 
            -
              - 2. | 
| 16 | 
            -
              - jruby-9. | 
| 14 | 
            +
              - 2.6.3
         | 
| 15 | 
            +
              - 2.5.5
         | 
| 16 | 
            +
              - 2.4.6
         | 
| 17 | 
            +
              - jruby-9.2.6.0
         | 
| 17 18 | 
             
            env:
         | 
| 18 19 | 
             
              global:
         | 
| 19 20 | 
             
                - COVERAGE='true'
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,11 @@ | |
| 1 | 
            +
            ## 0.8.0 to-be-released
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ### Fixed
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Loaded association structs are no longer rejected by output schemas (issue #34) (flash-gordon + solnic)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            [Compare v0.7.0...v0.8.0](https://github.com/rom-rb/rom-factory/compare/v0.7.0...v0.8.0)
         | 
| 8 | 
            +
             | 
| 1 9 | 
             
            ## 0.7.0 2018-11-17
         | 
| 2 10 |  | 
| 3 11 | 
             
            ### Added
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -1,24 +1,27 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            source 'https://rubygems.org'
         | 
| 2 4 |  | 
| 3 5 | 
             
            gemspec
         | 
| 4 6 |  | 
| 7 | 
            +
            git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
         | 
| 8 | 
            +
             | 
| 5 9 | 
             
            gem 'rake', '~> 12.0'
         | 
| 6 10 | 
             
            gem 'rspec', '~> 3.0'
         | 
| 7 11 |  | 
| 8 12 | 
             
            group :test do
         | 
| 9 | 
            -
              gem 'rom-sql', '~>  | 
| 10 | 
            -
              gem 'rom-core', '~> 4.2', '>= 4.2.1'
         | 
| 13 | 
            +
              gem 'rom-sql', '~> 3.0'
         | 
| 11 14 | 
             
              gem 'inflecto'
         | 
| 12 15 | 
             
              gem 'pry-byebug', platforms: :mri
         | 
| 13 16 | 
             
              gem 'pry', platforms: :jruby
         | 
| 14 17 | 
             
              gem 'codeclimate-test-reporter'
         | 
| 15 18 | 
             
              gem 'simplecov'
         | 
| 16 19 |  | 
| 17 | 
            -
              gem 'pg', '~> 0.21', platforms: :mri
         | 
| 18 | 
            -
              gem 'mysql2', platforms: :mri
         | 
| 20 | 
            +
              gem 'pg', '~> 0.21', platforms: [:mri, :truffleruby]
         | 
| 21 | 
            +
              gem 'mysql2', platforms: [:mri, :truffleruby]
         | 
| 19 22 | 
             
              gem 'jdbc-postgres', platforms: :jruby
         | 
| 20 23 | 
             
              gem 'jdbc-mysql', platforms: :jruby
         | 
| 21 | 
            -
              gem 'sqlite3', '~> 1.3', platforms: :mri
         | 
| 24 | 
            +
              gem 'sqlite3', '~> 1.3', platforms: [:mri, :truffleruby]
         | 
| 22 25 | 
             
              gem 'jdbc-sqlite3', platforms: :jruby
         | 
| 23 26 | 
             
            end
         | 
| 24 27 |  | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/benchmarks/basic.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'rom-factory'
         | 
| 2 4 | 
             
            require 'rom-core'
         | 
| 3 5 | 
             
            require 'active_record'
         | 
| @@ -23,9 +25,9 @@ end | |
| 23 25 | 
             
            factory = ROM::Factory.configure { |c| c.rom = rom }
         | 
| 24 26 |  | 
| 25 27 | 
             
            factory.define(:user) do |f|
         | 
| 26 | 
            -
              f.first_name "John"
         | 
| 27 | 
            -
              f.last_name "Doe"
         | 
| 28 | 
            -
              f.admin false
         | 
| 28 | 
            +
              f.first_name { "John" }
         | 
| 29 | 
            +
              f.last_name { "Doe" }
         | 
| 30 | 
            +
              f.admin { false }
         | 
| 29 31 | 
             
            end
         | 
| 30 32 |  | 
| 31 33 | 
             
            class User < ActiveRecord::Base
         | 
| @@ -35,35 +37,29 @@ ActiveRecord::Base.establish_connection(DATABASE_URL) | |
| 35 37 |  | 
| 36 38 | 
             
            FactoryBot.define do
         | 
| 37 39 | 
             
              factory(:user) do
         | 
| 38 | 
            -
                first_name "John"
         | 
| 39 | 
            -
                last_name  "Doe"
         | 
| 40 | 
            -
                admin false
         | 
| 40 | 
            +
                first_name { "John" }
         | 
| 41 | 
            +
                last_name  { "Doe" }
         | 
| 42 | 
            +
                admin { false }
         | 
| 41 43 | 
             
              end
         | 
| 42 44 | 
             
            end
         | 
| 43 45 |  | 
| 44 46 | 
             
            Fabricator(:user) do
         | 
| 45 | 
            -
              first_name "John"
         | 
| 46 | 
            -
              last_name  "Doe"
         | 
| 47 | 
            -
              admin false
         | 
| 47 | 
            +
              first_name { "John" }
         | 
| 48 | 
            +
              last_name  { "Doe" }
         | 
| 49 | 
            +
              admin { false }
         | 
| 48 50 | 
             
            end
         | 
| 49 51 |  | 
| 50 52 | 
             
            Benchmark.ips do |x|
         | 
| 51 53 | 
             
              x.report('rom-factory persisted struct') do
         | 
| 52 | 
            -
                 | 
| 53 | 
            -
                  factory[:user]
         | 
| 54 | 
            -
                end
         | 
| 54 | 
            +
                factory[:user]
         | 
| 55 55 | 
             
              end
         | 
| 56 56 |  | 
| 57 57 | 
             
              x.report('factory_bot') do
         | 
| 58 | 
            -
                 | 
| 59 | 
            -
                  FactoryBot.create(:user)
         | 
| 60 | 
            -
                end
         | 
| 58 | 
            +
                FactoryBot.create(:user)
         | 
| 61 59 | 
             
              end
         | 
| 62 60 |  | 
| 63 61 | 
             
              x.report('fabrication') do
         | 
| 64 | 
            -
                 | 
| 65 | 
            -
                  Fabricate(:user)
         | 
| 66 | 
            -
                end
         | 
| 62 | 
            +
                Fabricate(:user)
         | 
| 67 63 | 
             
              end
         | 
| 68 64 |  | 
| 69 65 | 
             
              x.compare!
         | 
    
        data/lib/rom-factory.rb
    CHANGED
    
    
    
        data/lib/rom/factory.rb
    CHANGED
    
    
    
        data/lib/rom/factory/builder.rb
    CHANGED
    
    
    
        data/lib/rom/factory/dsl.rb
    CHANGED
    
    
    
        data/lib/rom/factory/registry.rb
    CHANGED
    
    
| @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            require 'rom/factory/sequences'
         | 
| 2 4 |  | 
| 3 5 | 
             
            module ROM
         | 
| @@ -47,7 +49,14 @@ module ROM | |
| 47 49 | 
             
                    end
         | 
| 48 50 |  | 
| 49 51 | 
             
                    attributes.merge!(materialized_callables)
         | 
| 50 | 
            -
             | 
| 52 | 
            +
             | 
| 53 | 
            +
                    associations = assoc_names
         | 
| 54 | 
            +
                      .map { |key| [key, attributes[key]] if attributes.key?(key) }
         | 
| 55 | 
            +
                      .compact
         | 
| 56 | 
            +
                      .to_h
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    attributes = relation.output_schema[attributes]
         | 
| 59 | 
            +
                    attributes.update(associations)
         | 
| 51 60 |  | 
| 52 61 | 
             
                    model.new(attributes)
         | 
| 53 62 | 
             
                  end
         | 
    
        data/lib/rom/factory/version.rb
    CHANGED
    
    
    
        data/rom-factory.gemspec
    CHANGED
    
    | @@ -1,4 +1,6 @@ | |
| 1 1 | 
             
            # coding: utf-8
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 2 4 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 3 5 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 6 | 
             
            require 'rom/factory/version'
         | 
| @@ -28,7 +30,7 @@ Gem::Specification.new do |spec| | |
| 28 30 | 
             
              spec.require_paths = ["lib"]
         | 
| 29 31 |  | 
| 30 32 | 
             
              spec.add_dependency "dry-configurable", "~> 0.7"
         | 
| 31 | 
            -
              spec.add_dependency "dry-core", "~> 0. | 
| 32 | 
            -
              spec.add_dependency "rom-core", "~>  | 
| 33 | 
            +
              spec.add_dependency "dry-core", "~> 0.4"
         | 
| 34 | 
            +
              spec.add_dependency "rom-core", "~> 5.0"
         | 
| 33 35 | 
             
              spec.add_dependency "faker", "~> 1.7"
         | 
| 34 36 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rom-factory
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.8.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Janis Miezitis
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: exe
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2019-04-24 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: dry-configurable
         | 
| @@ -31,34 +31,28 @@ dependencies: | |
| 31 31 | 
             
                requirements:
         | 
| 32 32 | 
             
                - - "~>"
         | 
| 33 33 | 
             
                  - !ruby/object:Gem::Version
         | 
| 34 | 
            -
                    version: '0. | 
| 35 | 
            -
                - - ">="
         | 
| 36 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            -
                    version: 0.3.1
         | 
| 34 | 
            +
                    version: '0.4'
         | 
| 38 35 | 
             
              type: :runtime
         | 
| 39 36 | 
             
              prerelease: false
         | 
| 40 37 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 38 | 
             
                requirements:
         | 
| 42 39 | 
             
                - - "~>"
         | 
| 43 40 | 
             
                  - !ruby/object:Gem::Version
         | 
| 44 | 
            -
                    version: '0. | 
| 45 | 
            -
                - - ">="
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 0.3.1
         | 
| 41 | 
            +
                    version: '0.4'
         | 
| 48 42 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 49 43 | 
             
              name: rom-core
         | 
| 50 44 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 51 45 | 
             
                requirements:
         | 
| 52 46 | 
             
                - - "~>"
         | 
| 53 47 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 48 | 
            +
                    version: '5.0'
         | 
| 55 49 | 
             
              type: :runtime
         | 
| 56 50 | 
             
              prerelease: false
         | 
| 57 51 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 58 52 | 
             
                requirements:
         | 
| 59 53 | 
             
                - - "~>"
         | 
| 60 54 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 55 | 
            +
                    version: '5.0'
         | 
| 62 56 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 63 57 | 
             
              name: faker
         | 
| 64 58 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -82,6 +76,9 @@ extensions: [] | |
| 82 76 | 
             
            extra_rdoc_files: []
         | 
| 83 77 | 
             
            files:
         | 
| 84 78 | 
             
            - ".codeclimate.yml"
         | 
| 79 | 
            +
            - ".github/ISSUE_TEMPLATE/----please-don-t-ask-for-support-via-issues.md"
         | 
| 80 | 
            +
            - ".github/ISSUE_TEMPLATE/----please-don-t-report-feature-requests-via-issues.md"
         | 
| 81 | 
            +
            - ".github/ISSUE_TEMPLATE/---a-detailed-bug-report.md"
         | 
| 85 82 | 
             
            - ".gitignore"
         | 
| 86 83 | 
             
            - ".rspec"
         | 
| 87 84 | 
             
            - ".travis.yml"
         | 
| @@ -131,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 131 128 | 
             
                - !ruby/object:Gem::Version
         | 
| 132 129 | 
             
                  version: '0'
         | 
| 133 130 | 
             
            requirements: []
         | 
| 134 | 
            -
             | 
| 135 | 
            -
            rubygems_version: 2.7.6
         | 
| 131 | 
            +
            rubygems_version: 3.0.3
         | 
| 136 132 | 
             
            signing_key: 
         | 
| 137 133 | 
             
            specification_version: 4
         | 
| 138 134 | 
             
            summary: ROM based builder library to make your specs awesome. DSL partially inspired
         |