demo_mode 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bd782c3af4723645221a5df708ba1acde6e07a0d6d875f8644f201db1b19e02
4
- data.tar.gz: 45fc4c48119fd8af020ec131243431178436c5ae247339a0fd9c9e3602bf4f2a
3
+ metadata.gz: f46c5ac419af565102df4efa36cc8383f847cbe680a48c12b362bbbde6c83417
4
+ data.tar.gz: b202d52d608dfbcf1c09fc880d34597b99c457bba786db624d414c671ffe1291
5
5
  SHA512:
6
- metadata.gz: 7fcc0016139912a257d9e507abc30c0c2c63771483f2573372d40b6bcf553cedd9d9c2041b636f9d06a7265e7af22a55b3f6192aaf11d5be33f43cf01432d654
7
- data.tar.gz: 16503560feaa837f466bf8dd05307175ac715847250012d43c29f75f54b7ad1e1eeb7afec0fce008ed2c8e4ed1457e05a76bb7e4725317726b081dfdbf6586ed
6
+ metadata.gz: 1da08b4e2d624471ac68b6417b16bd2217594d037d988906a80f6b6c760ddce5c576040c14fc97448efd766bf83da5a5d147fe35b0a216574cc642146bfa4852
7
+ data.tar.gz: a6c9edbbc801d7976df372fbd2ecf6544bc9c64f89083a483bd8ea20f828b3c0f43177c899b618079ebc46de91b35e3e169616ff95cb72d270e6c7ce7669cf98
@@ -25,7 +25,7 @@ module DemoMode
25
25
 
26
26
  def create
27
27
  @session = Session.new(create_params)
28
- @session.save_and_generate_account!
28
+ @session.save_and_generate_account_later!
29
29
  session[:demo_session] = { 'id' => @session.id, 'last_request_at' => Time.zone.now }
30
30
  respond_to do |f|
31
31
  f.html { redirect_to @session }
@@ -26,6 +26,13 @@ module DemoMode
26
26
  end
27
27
 
28
28
  def save_and_generate_account!
29
+ transaction do
30
+ save!
31
+ AccountGenerationJob.perform_now(self)
32
+ end
33
+ end
34
+
35
+ def save_and_generate_account_later!
29
36
  transaction do
30
37
  save!
31
38
  AccountGenerationJob.perform_later(self)
data/lib/demo_mode/cli.rb CHANGED
@@ -20,8 +20,8 @@ class DemoMode::Cli
20
20
  prompt_persona
21
21
  end
22
22
 
23
- def created_personas
24
- @created_personas ||= []
23
+ def created_sessions
24
+ @created_sessions ||= []
25
25
  end
26
26
 
27
27
  private
@@ -41,23 +41,24 @@ class DemoMode::Cli
41
41
  CLI::UI::Frame.open("{{*}} Generate an Account! {{*}}") do
42
42
  CLI::UI::Prompt.ask('Which persona should we use?') do |handler|
43
43
  DemoMode.personas.sort_by { |p| p.name.to_s }.each do |persona|
44
- persona_name = persona.name.to_s.titleize
44
+ persona_label = persona.name.to_s.titleize
45
45
 
46
- handler.option(persona_name) do
46
+ handler.option(persona_label) do
47
47
  persona.features.each do |feature|
48
48
  puts "👉 #{feature}"
49
49
  end
50
50
 
51
51
  named_tags = SemanticLogger.named_tags if defined?(SemanticLogger)
52
52
 
53
- variant = variant_for(persona, persona_name)
53
+ variant = variant_for(persona, persona_label)
54
54
 
55
55
  CLI::UI::Spinner.spin("generating account...") do |spinner|
56
56
  SemanticLogger.push_named_tags(named_tags) if defined?(SemanticLogger)
57
- password = DemoMode.current_password
58
- signinable = persona.generate!(variant: variant)
57
+
58
+ session = DemoMode::Session.new(persona_name: persona.name, variant: variant)
59
+ session.save_and_generate_account!
59
60
  spinner.update_title('done!')
60
- created_personas << { name: persona_name, email: signinable.email, password: password }
61
+ created_sessions << session
61
62
  end
62
63
  end
63
64
  end
@@ -67,22 +68,23 @@ class DemoMode::Cli
67
68
  ask_next_step
68
69
  end
69
70
 
70
- def variant_for(persona, persona_name)
71
+ def variant_for(persona, persona_label)
71
72
  if persona.variants.keys == ['default']
72
73
  :default
73
74
  else
74
75
  CLI::UI::Prompt.ask(
75
- "Which variant should we use for #{persona_name}?",
76
+ "Which variant should we use for #{persona_label}?",
76
77
  options: persona.variants.keys,
77
78
  )
78
79
  end
79
80
  end
80
81
 
81
82
  def display_personas
82
- created_personas.each do |persona|
83
- CLI::UI::Frame.open("{{*}} #{persona[:name]} {{*}}") do
84
- puts "👤 :: #{persona[:email]}"
85
- puts "🔑 :: #{persona[:password]}"
83
+ created_sessions.each do |session|
84
+ CLI::UI::Frame.open("{{*}} #{session.persona_name} {{*}}") do
85
+ puts "👤 :: #{session.signinable.email}"
86
+ puts "🔑 :: #{session.signinable_password}"
87
+ puts "🌐 :: #{DemoMode.session_url(session)}"
86
88
  end
87
89
  end
88
90
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DemoMode
4
- VERSION = '1.3.0'
4
+ VERSION = '1.4.0'
5
5
  end
data/lib/demo_mode.rb CHANGED
@@ -46,6 +46,16 @@ module DemoMode
46
46
  Thread.current[:_demo_mode_password] = value
47
47
  end
48
48
 
49
+ def session_url(session)
50
+ routes = DemoMode::Engine.routes
51
+
52
+ options = routes.default_url_options.presence
53
+ options ||= ActionMailer::Base.default_url_options.presence if defined?(ActionMailer::Base)
54
+ options ||= { only_path: true }
55
+
56
+ routes.url_for(controller: 'demo_mode/sessions', action: 'show', id: session, **options)
57
+ end
58
+
49
59
  private
50
60
 
51
61
  def configuration
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: demo_mode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-22 00:00:00.000000000 Z
11
+ date: 2024-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cli-ui