demo_mode 3.1.0 → 3.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10de8b9508baa5777b2781794f82c8babd7f8c24bd70dcdfe3b8a7a875e583d8
4
- data.tar.gz: 76b7e2216e689a68c81fed89e90b553642936a7eff850a0b65b0f75e9b809f1b
3
+ metadata.gz: 79a195c2f6c9a3a17139cf5115b777fbdb5471cf5ed11de6fecabd78ac7fbe9f
4
+ data.tar.gz: e88204e01409170ade1c97f59f6d3bd1a3474155758af1b35933fbf90e229385
5
5
  SHA512:
6
- metadata.gz: '087250bc248228cd873012cf28653b98919864f46146ed278f0138a0e4000e75d5f151695e36735e795115cdcf2f042fff1dd1d3f14e4ae15bca37a318b05fee'
7
- data.tar.gz: 9300fc6fa3fd1a2f84dc904ea8c7822e3b8b07e05d225ca403d423cbf9ae484b9250c5de2463dafe8a73453a0c3c25585aff35ca1a01884acb98568529672206
6
+ metadata.gz: d68636728270549d734df97882e2f57d586f14492b77521920587379cc37afbb400f377dd1dd290d3dbf9d9268dd25a794caae8857ab3caa51a27652fa7fd280
7
+ data.tar.gz: e62c44754e8c2a5fcc2e1884e6f16189f502555f8d4e00f683e1edc6775bc0ec014928fc696ed94c4f5ce7ebed5bf09b1cb83345e23914bcd921038cdf108ca5
data/README.md CHANGED
@@ -472,7 +472,16 @@ begin_demo do
472
472
  end
473
473
  ```
474
474
 
475
- ### FactoryBot `sequence` extension
475
+ ### FactoryBot extensions
476
+
477
+ Factory bot ships two patches that may be manually loaded after loading FactoryBot:
478
+
479
+ ```ruby
480
+ require 'factory_bot'
481
+ require 'demo_mode/factory_bot_ext'
482
+ ```
483
+
484
+ #### `sequence`
476
485
 
477
486
  `DemoMode` comes with a patch designed to be a drop-in replacement for
478
487
  [factory_bot](https://github.com/thoughtbot/factory_bot)'s `sequence` feature,
@@ -487,11 +496,19 @@ records in the DB (rather than starting at "Something 1" each time). This
487
496
  feature is necessary wherever you rely on `UNIQUE` constraints in the database,
488
497
  or uniqueness validations on your models.
489
498
 
490
- This patch must be manually loaded after loading FactoryBot:
499
+ #### `around_each` hook
500
+
501
+ Use `FactoryBot.around_each` to wrap all factory execution, which can be used to
502
+ skip expensive callbacks/logging:
491
503
 
492
504
  ```ruby
493
- require 'factory_bot'
494
- require 'demo_mode/factory_bot_ext'
505
+ FactoryBot.around_each do |&blk|
506
+ was_enabled = MyLogger.enabled?
507
+ MyLogger.disable!
508
+ blk.call
509
+ ensure
510
+ MyLogger.enable! if was_enabled
511
+ end
495
512
  ```
496
513
 
497
514
  #### Considerations
@@ -4,12 +4,7 @@ module DemoMode
4
4
  class Session < ActiveRecord::Base
5
5
  attribute :variant, default: :default
6
6
 
7
- if ActiveRecord.gem_version >= Gem::Version.new('7.2')
8
- enum :status, { processing: 'processing', successful: 'successful', failed: 'failed' }, default: 'processing'
9
- else
10
- attribute :status, default: :processing
11
- enum status: { processing: 'processing', successful: 'successful', failed: 'failed' }
12
- end
7
+ enum :status, { processing: 'processing', successful: 'successful', failed: 'failed' }, default: 'processing'
13
8
 
14
9
  validates :persona_name, :variant, presence: true
15
10
  validates :persona, presence: { message: :required }, on: :create, if: :persona_name?
@@ -2,11 +2,33 @@
2
2
 
3
3
  module FactoryBot
4
4
  class DefinitionProxy
5
- def clever_sequence(name, &block)
6
- sequence = CleverSequence.new(name, &block)
5
+ def clever_sequence(name, &)
6
+ sequence = CleverSequence.new(name, &)
7
7
  add_attribute(name) { sequence.with_class(@instance&.class).next }
8
8
  end
9
9
 
10
10
  alias sequence clever_sequence
11
11
  end
12
12
  end
13
+
14
+ module DemoMode
15
+ module FactoryBotExt
16
+ def around_each(&block)
17
+ @around_each ||= ->(&blk) { blk.call }
18
+ if block_given?
19
+ previous = @around_each
20
+ @around_each = ->(&blk) { previous.call { block.call(&blk) } }
21
+ end
22
+ @around_each
23
+ end
24
+ end
25
+
26
+ module FactoryBotRunnerExt
27
+ def run(...)
28
+ ::FactoryBot.around_each.call { super }
29
+ end
30
+ end
31
+
32
+ ::FactoryBot.extend(FactoryBotExt)
33
+ ::FactoryBot::FactoryRunner.prepend(FactoryBotRunnerExt)
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DemoMode
4
- VERSION = '3.1.0'
4
+ VERSION = '3.3.0'
5
5
  end
data/lib/demo_mode.rb CHANGED
@@ -27,12 +27,12 @@ module DemoMode
27
27
  'demo_mode_'
28
28
  end
29
29
 
30
- def configure(&block)
31
- configuration.instance_eval(&block)
30
+ def configure(&)
31
+ configuration.instance_eval(&)
32
32
  end
33
33
 
34
- def add_persona(name = default_name, &block)
35
- configuration.persona(name, &block)
34
+ def add_persona(name = default_name, &)
35
+ configuration.persona(name, &)
36
36
  end
37
37
 
38
38
  def callout_personas
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: demo_mode
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: actionpack
@@ -15,7 +15,7 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '6.1'
18
+ version: '7.2'
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
21
  version: '8.1'
@@ -25,7 +25,7 @@ dependencies:
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '6.1'
28
+ version: '7.2'
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
31
  version: '8.1'
@@ -35,7 +35,7 @@ dependencies:
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: '6.1'
38
+ version: '7.2'
39
39
  - - "<"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '8.1'
@@ -45,7 +45,7 @@ dependencies:
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '6.1'
48
+ version: '7.2'
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
51
  version: '8.1'
@@ -55,7 +55,7 @@ dependencies:
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
- version: '6.1'
58
+ version: '7.2'
59
59
  - - "<"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '8.1'
@@ -65,7 +65,7 @@ dependencies:
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '6.1'
68
+ version: '7.2'
69
69
  - - "<"
70
70
  - !ruby/object:Gem::Version
71
71
  version: '8.1'
@@ -75,7 +75,7 @@ dependencies:
75
75
  requirements:
76
76
  - - ">="
77
77
  - !ruby/object:Gem::Version
78
- version: '6.1'
78
+ version: '7.2'
79
79
  - - "<"
80
80
  - !ruby/object:Gem::Version
81
81
  version: '8.1'
@@ -85,7 +85,7 @@ dependencies:
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
- version: '6.1'
88
+ version: '7.2'
89
89
  - - "<"
90
90
  - !ruby/object:Gem::Version
91
91
  version: '8.1'
@@ -109,7 +109,7 @@ dependencies:
109
109
  requirements:
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: '6.1'
112
+ version: '7.2'
113
113
  - - "<"
114
114
  - !ruby/object:Gem::Version
115
115
  version: '8.1'
@@ -119,7 +119,7 @@ dependencies:
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: '6.1'
122
+ version: '7.2'
123
123
  - - "<"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '8.1'
@@ -129,7 +129,7 @@ dependencies:
129
129
  requirements:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: '6.1'
132
+ version: '7.2'
133
133
  - - "<"
134
134
  - !ruby/object:Gem::Version
135
135
  version: '8.1'
@@ -139,7 +139,7 @@ dependencies:
139
139
  requirements:
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- version: '6.1'
142
+ version: '7.2'
143
143
  - - "<"
144
144
  - !ruby/object:Gem::Version
145
145
  version: '8.1'
@@ -357,14 +357,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
357
357
  requirements:
358
358
  - - ">="
359
359
  - !ruby/object:Gem::Version
360
- version: '3.0'
360
+ version: '3.2'
361
361
  required_rubygems_version: !ruby/object:Gem::Requirement
362
362
  requirements:
363
363
  - - ">="
364
364
  - !ruby/object:Gem::Version
365
365
  version: '0'
366
366
  requirements: []
367
- rubygems_version: 3.6.5
367
+ rubygems_version: 3.6.8
368
368
  specification_version: 4
369
369
  summary: A configurable demo mode for your Rails app.
370
370
  test_files: []