demo_mode 3.0.0 → 3.2.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/README.md +21 -4
- data/app/controllers/demo_mode/sessions_controller.rb +2 -0
- data/app/models/demo_mode/session.rb +5 -0
- data/lib/demo_mode/factory_bot_ext.rb +22 -0
- data/lib/demo_mode/persona.rb +8 -0
- data/lib/demo_mode/version.rb +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32fe807f48ace30d24a2172d0b73965272b6d93057dd2447cb4587d386ef93a2
|
4
|
+
data.tar.gz: 568795bf8f52234c1d4ead6882762bfa6ec631e6a3242eada9848a7e050c6a0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5d183a6c1de1c237dfca4adf333e637223c6d89525249d36841888a432c5c6e8727d01debba0f790f86d5f732441848c8f6ba2e816f89e254666b65e661b72a
|
7
|
+
data.tar.gz: a29b4fef772ebb421e4f8236c911316bb5078c29a231e5241788b2c1053a2bef9fe760edf4cfc629b5de21897107564265d3e5a0106adeda39ed57ae22088da5
|
data/README.md
CHANGED
@@ -472,7 +472,16 @@ begin_demo do
|
|
472
472
|
end
|
473
473
|
```
|
474
474
|
|
475
|
-
### FactoryBot
|
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
|
-
|
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
|
-
|
494
|
-
|
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
|
@@ -26,6 +26,7 @@ module DemoMode
|
|
26
26
|
def create
|
27
27
|
@session = Session.new(create_params)
|
28
28
|
@session.save_and_generate_account_later!(**options_params.to_unsafe_h.deep_symbolize_keys)
|
29
|
+
@session.reload
|
29
30
|
session[:demo_session] = { 'id' => @session.id, 'last_request_at' => Time.zone.now }
|
30
31
|
respond_to do |f|
|
31
32
|
f.html { redirect_to @session, status: :see_other }
|
@@ -58,6 +59,7 @@ module DemoMode
|
|
58
59
|
status: @session.status,
|
59
60
|
username: @session.signinable_username,
|
60
61
|
password: @session.signinable_password,
|
62
|
+
metadata: @session.signinable_metadata,
|
61
63
|
}
|
62
64
|
end
|
63
65
|
end
|
@@ -22,6 +22,7 @@ module DemoMode
|
|
22
22
|
delegate :begin_demo,
|
23
23
|
:custom_sign_in?,
|
24
24
|
:display_credentials?,
|
25
|
+
:metadata,
|
25
26
|
to: :persona,
|
26
27
|
allow_nil: true
|
27
28
|
|
@@ -29,6 +30,10 @@ module DemoMode
|
|
29
30
|
signinable.public_send(DemoMode.signinable_username_method)
|
30
31
|
end
|
31
32
|
|
33
|
+
def signinable_metadata
|
34
|
+
successful? ? metadata.call(self) : {}
|
35
|
+
end
|
36
|
+
|
32
37
|
# Heads up: finding a persona is not guaranteed (e.g. past sessions)
|
33
38
|
def persona
|
34
39
|
DemoMode.personas.find { |p| p.name.to_s == persona_name.to_s }
|
@@ -10,3 +10,25 @@ module FactoryBot
|
|
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
|
data/lib/demo_mode/persona.rb
CHANGED
data/lib/demo_mode/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demo_mode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Griffith
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: actionpack
|
@@ -351,7 +350,6 @@ licenses:
|
|
351
350
|
metadata:
|
352
351
|
rubygems_mfa_required: 'true'
|
353
352
|
changelog_uri: https://github.com/Betterment/demo_mode/blob/main/CHANGELOG.md
|
354
|
-
post_install_message:
|
355
353
|
rdoc_options: []
|
356
354
|
require_paths:
|
357
355
|
- lib
|
@@ -366,8 +364,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
366
364
|
- !ruby/object:Gem::Version
|
367
365
|
version: '0'
|
368
366
|
requirements: []
|
369
|
-
rubygems_version: 3.
|
370
|
-
signing_key:
|
367
|
+
rubygems_version: 3.6.8
|
371
368
|
specification_version: 4
|
372
369
|
summary: A configurable demo mode for your Rails app.
|
373
370
|
test_files: []
|