Class: ModelTestFlowDisplay

Inherits:
Object
  • Object
show all
Defined in:
lib/tng/ui/model_test_flow_display.rb

Instance Method Summary collapse

Constructor Details

#initialize(prompt, pastel) ⇒ ModelTestFlowDisplay



10
11
12
13
14
15
16
17
18
# File 'lib/tng/ui/model_test_flow_display.rb', line 10

def initialize(prompt, pastel)
  @prompt = prompt
  @pastel = pastel
  @terminal_width = begin
    TTY::Screen.width
  rescue StandardError
    80
  end
end

Instance Method Details

#select_model(models) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tng/ui/model_test_flow_display.rb', line 20

def select_model(models)
  header = @pastel.public_send(Tng::UI::Theme.color(:primary)).bold("#{Tng::UI::Theme.icon(:config)} Select model to test:")
  puts Tng::UI::Theme.center_text(header, @terminal_width)

  @prompt.select(
    "",
    cycle: true,
    per_page: 12,
    filter: true,
    symbols: { marker: Tng::UI::Theme.icon(:marker) }
  ) do |menu|
    models.each do |model|
      display_name = "#{model[:name]} #{@pastel.public_send(Tng::UI::Theme.color(:muted), "(#{model[:path]})")}"
      menu.choice display_name, model
    end
    menu.choice @pastel.public_send(Tng::UI::Theme.color(:secondary), "#{Tng::UI::Theme.icon(:back)}  Back"), :back
  end
end

#select_model_method(model, methods) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/tng/ui/model_test_flow_display.rb', line 52

def select_model_method(model, methods)
  header = @pastel.public_send(Tng::UI::Theme.color(:primary)).bold("#{Tng::UI::Theme.icon(:rocket)} Select method to test in #{model[:name]}")
  puts Tng::UI::Theme.center_text(header, @terminal_width)

  @prompt.select(
    "",
    cycle: true,
    per_page: 10,
    filter: true,
    symbols: { marker: Tng::UI::Theme.icon(:marker) }
  ) do |menu|
    methods.each do |method|
      menu.choice method[:name], method
    end
    menu.choice @pastel.public_send(Tng::UI::Theme.color(:secondary), "#{Tng::UI::Theme.icon(:back)}  Back"), :back
  end
end

#show_no_methods_message(model) ⇒ Object



70
71
72
73
74
75
76
77
78
79
# File 'lib/tng/ui/model_test_flow_display.rb', line 70

def show_no_methods_message(model)
  error_msg = "#{@pastel.public_send(Tng::UI::Theme.color(:error)).bold("#{Tng::UI::Theme.icon(:error)} No methods found in #{model[:name]}")}\n#{@pastel.public_send(
    Tng::UI::Theme.color(:muted), "Model may be empty or have syntax errors"
  )}"
  puts Tng::UI::Theme.center_text(error_msg, @terminal_width)
  @prompt.keypress(Tng::UI::Theme.center_text(
                     @pastel.public_send(Tng::UI::Theme.color(:muted),
                                         "Press any key to continue..."), @terminal_width
                   ))
end

#show_no_models_messageObject



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/tng/ui/model_test_flow_display.rb', line 39

def show_no_models_message
  puts
  puts Tng::UI::Theme.center_text(
    @pastel.public_send(Tng::UI::Theme.color(:warning),
                        "#{Tng::UI::Theme.icon(:warning)} No models found in app/models"), @terminal_width
  )
  puts Tng::UI::Theme.center_text(
    @pastel.public_send(Tng::UI::Theme.color(:muted),
                        "Make sure you're in a Rails project with models"), @terminal_width
  )
  puts
end