Class: ServiceTestFlowDisplay

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

Instance Method Summary collapse

Constructor Details

#initialize(prompt, pastel) ⇒ ServiceTestFlowDisplay

Returns a new instance of ServiceTestFlowDisplay.



10
11
12
13
14
15
16
17
18
# File 'lib/tng/ui/service_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_service(services) ⇒ Object



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

def select_service(services)
  header = @pastel.public_send(Tng::UI::Theme.color(:primary)).bold("#{Tng::UI::Theme.icon(:config)} Select service 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|
    services.each do |service|
      display_name = "#{service[:name]} #{@pastel.public_send(Tng::UI::Theme.color(:muted), "(#{service[:path]})")}"
      menu.choice display_name, service
    end
    menu.choice @pastel.public_send(Tng::UI::Theme.color(:secondary), "#{Tng::UI::Theme.icon(:back)}  Back"), :back
  end
end

#select_service_method(service, methods) ⇒ Object



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

def select_service_method(service, methods)
  header = @pastel.public_send(Tng::UI::Theme.color(:primary)).bold("#{Tng::UI::Theme.icon(:rocket)} Select method to test for #{service[:name]}")
  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|
    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(service) ⇒ Object



68
69
70
71
72
73
74
75
76
77
# File 'lib/tng/ui/service_test_flow_display.rb', line 68

def show_no_methods_message(service)
  error_msg = "#{@pastel.public_send(Tng::UI::Theme.color(:error)).bold("#{Tng::UI::Theme.icon(:error)} No methods found in #{service[:name]}")}\n#{@pastel.public_send(
    Tng::UI::Theme.color(:muted), "The service might not have any public methods or could not be analyzed."
  )}"
  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_services_messageObject



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

def show_no_services_message
  error_msg = "#{@pastel.public_send(Tng::UI::Theme.color(:error)).bold("#{Tng::UI::Theme.icon(:error)} No services found in your application")}\n#{@pastel.public_send(
    Tng::UI::Theme.color(:muted), "Make sure you have services in app/services/ or app/service/"
  )}"
  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