fixturex 0.1.4 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ffed47838ffeca2b48f07aedb9b3fde97e511d815cb26c43777d5da4b7a243f
4
- data.tar.gz: 4b80bdaa446e189d01c18f2b1822c5ce4d0363b009488acd0f2ea41ce27e0baa
3
+ metadata.gz: ba442689cba33d6a107a78f02cce97607f69b122f14e7a47ed71466ebfb3ef51
4
+ data.tar.gz: 6aaa1d21d83b24a0346caf5d49df17954f08f5da559e8f1a897038d90e01c3dc
5
5
  SHA512:
6
- metadata.gz: 620e13262446d7e3aa345dace7da41bd3ba5f84f9adb1e8449990225a269601744228ff7bc69ece0e0c1102931cd3899e1b27e5b05e6a232a8ba106edee80ee2
7
- data.tar.gz: b7ceb8bebd224a3e9479ed96d09e17d338d5e015cbf15f253b4731398e147c63d7b802ddf075f1b8e266d5c9bcfe6d017c82446b5f9dcba86ea98a6f9a8bdabd
6
+ metadata.gz: 6fa6003d12a1e64a1b680b8780e468e5e54fe05fc6992887b7c1eacb408bb113f5510d738dd8020727607667a5728fb5b9109e3c89fba587a607ba5294c15196
7
+ data.tar.gz: 6f21761a41d8802e638121fae5051f6a69a6754eabcd3479a841e2a88668e80c94eb7ef390fcfe3627793a596cad741aabad8e9e4a134e1bceaf9128c0296d52
@@ -21,15 +21,12 @@ jobs:
21
21
  runs-on: ubuntu-latest
22
22
  strategy:
23
23
  matrix:
24
- ruby-version: ['2.6', '2.7', '3.0']
24
+ ruby-version: ['3.3']
25
25
 
26
26
  steps:
27
- - uses: actions/checkout@v2
27
+ - uses: actions/checkout@v4
28
28
  - name: Set up Ruby
29
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
30
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
31
- # uses: ruby/setup-ruby@v1
32
- uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
29
+ uses: ruby/setup-ruby@v1
33
30
  with:
34
31
  ruby-version: ${{ matrix.ruby-version }}
35
32
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fixturex (0.1.3)
4
+ fixturex (0.1.6)
5
5
  rails (>= 6.0)
6
6
 
7
7
  GEM
@@ -118,7 +118,7 @@ GEM
118
118
  mini_mime (1.1.5)
119
119
  mini_portile2 (2.8.8)
120
120
  minitest (5.25.5)
121
- net-imap (0.5.6)
121
+ net-imap (0.5.9)
122
122
  date
123
123
  net-protocol
124
124
  net-pop (0.1.2)
@@ -240,7 +240,7 @@ GEM
240
240
  unicode-emoji (4.0.4)
241
241
  uri (1.0.3)
242
242
  useragent (0.16.11)
243
- websocket-driver (0.7.7)
243
+ websocket-driver (0.8.0)
244
244
  base64
245
245
  websocket-extensions (>= 0.1.0)
246
246
  websocket-extensions (0.1.5)
@@ -15,27 +15,31 @@ module Fixturex
15
15
  fixtures_paths(model_class).each_with_object([]) do |path, acc|
16
16
  fixtures = YAML.load_file(path)
17
17
  fixtures.select! do |_name, attributes|
18
- # if fixture has `type` - STI - then we only want type == class_name
19
- attributes['type'].nil? || attributes['type'] == model_class.name
18
+ attributes['type'].nil? || attributes['type'].constantize <= model_class
20
19
  end
21
20
  acc.concat(fixtures.map { |name, attributes| Fixture.new(name, path, attributes) })
22
21
  end
23
22
  end
24
23
 
25
24
  def self.fixtures_paths(model_class)
26
- fixtures_paths = []
27
25
  # TODO: is there a better way to find out fixtures root directory?
28
26
  fixtures_root = ActiveRecord::Tasks::DatabaseTasks.fixtures_path
29
27
 
30
- while model_class < ActiveRecord::Base
31
- fixture_file = "#{model_class.to_s.tableize}.yml"
32
- path = File.join(fixtures_root, *fixture_file.split('/'))
28
+ # Make subclasses/ancestors discoverable
29
+ Rails.application.eager_load!
30
+
31
+ superclasses = model_class.ancestors.select do |ancestor|
32
+ ancestor < ActiveRecord::Base
33
+ end
33
34
 
34
- fixtures_paths << path if File.exist?(path)
35
+ (
36
+ superclasses + [model_class] + model_class.subclasses
37
+ ).filter_map do |klass|
38
+ fixture_file = "#{klass.to_s.tableize}.yml"
39
+ path = File.join(fixtures_root, *fixture_file.split('/'))
35
40
 
36
- model_class = model_class.superclass
41
+ path if File.exist?(path)
37
42
  end
38
- fixtures_paths
39
43
  end
40
44
  end
41
45
 
@@ -91,11 +95,11 @@ module Fixturex
91
95
  # rubocop:enable Metrics/AbcSize
92
96
 
93
97
  def association_model_class(association)
94
- class_name = association.class_name
98
+ namespace = association.active_record.name.split('::')[0..-2].join('::')
99
+ class_name = [namespace, association.class_name].filter(&:present?).join('::')
95
100
 
96
101
  unless Object.const_defined?(class_name)
97
- namespace = association.active_record.name.split('::')[0..-2].join('::')
98
- class_name = "#{namespace}::#{class_name}"
102
+ class_name = association.class_name
99
103
  end
100
104
 
101
105
  class_name.constantize
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fixturex
4
- VERSION = '0.1.4'
4
+ VERSION = '0.1.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixturex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - artemave
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-20 00:00:00.000000000 Z
11
+ date: 2025-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails