roku_builder 4.25.4 → 4.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/intergration/roku_builder/test_helper.rb +2 -3
  3. data/intergration/roku_builder/test_profiler.rb +1 -1
  4. data/lib/roku_builder/config_parser.rb +4 -5
  5. data/lib/roku_builder/device_manager.rb +100 -0
  6. data/lib/roku_builder/plugins/core.rb +3 -1
  7. data/lib/roku_builder/plugins/indentation_inspector.rb +2 -2
  8. data/lib/roku_builder/plugins/inspector.rb +36 -26
  9. data/lib/roku_builder/plugins/line_inspector.rb +27 -6
  10. data/lib/roku_builder/plugins/linker.rb +29 -22
  11. data/lib/roku_builder/plugins/loader.rb +30 -11
  12. data/lib/roku_builder/plugins/monitor.rb +19 -17
  13. data/lib/roku_builder/plugins/navigator.rb +40 -34
  14. data/lib/roku_builder/plugins/packager.rb +109 -92
  15. data/lib/roku_builder/plugins/profiler.rb +24 -15
  16. data/lib/roku_builder/plugins/tester.rb +15 -13
  17. data/lib/roku_builder/util.rb +39 -17
  18. data/lib/roku_builder/version.rb +1 -1
  19. data/lib/roku_builder.rb +3 -19
  20. data/roku_builder.gemspec +3 -2
  21. data/test/roku_builder/plugins/test_analyzer.rb +19 -10
  22. data/test/roku_builder/plugins/test_core.rb +2 -3
  23. data/test/roku_builder/plugins/test_inspector.rb +48 -8
  24. data/test/roku_builder/plugins/test_linker.rb +66 -10
  25. data/test/roku_builder/plugins/test_loader.rb +44 -15
  26. data/test/roku_builder/plugins/test_monitor.rb +33 -16
  27. data/test/roku_builder/plugins/test_navigator.rb +55 -14
  28. data/test/roku_builder/plugins/test_packager.rb +118 -34
  29. data/test/roku_builder/plugins/test_profiler.rb +153 -78
  30. data/test/roku_builder/plugins/test_tester.rb +20 -5
  31. data/test/roku_builder/test_device_manager.rb +187 -0
  32. data/test/roku_builder/test_files/analyzer_test/dont_use_hello_world.json +11 -0
  33. data/test/roku_builder/test_files/analyzer_test/linter_positive_match.json +13 -0
  34. data/test/roku_builder/test_helper.rb +6 -0
  35. data/test/roku_builder/test_roku_builder.rb +5 -42
  36. metadata +27 -6
@@ -32,6 +32,7 @@ module RokuBuilder
32
32
  assert options[:screencapture]
33
33
  end
34
34
  def test_inspector_inspect
35
+
35
36
  logger = Minitest::Mock.new()
36
37
 
37
38
  logger.expect(:formatter=, nil, [Proc])
@@ -77,9 +78,19 @@ module RokuBuilder
77
78
  options = {inspect: true, in: File.join(test_files_path(InspectorTest), "test.pkg"), password: "password"}
78
79
  config, options = build_config_options_objects(InspectorTest, options, false)
79
80
  inspector = Inspector.new(config: config)
80
- ::Logger.stub(:new, logger) do
81
- inspector.inspect(options: options)
81
+
82
+ device_manager = Minitest::Mock.new
83
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
84
+ device_manager.expect(:reserve_device, device, no_lock: false)
85
+ device_manager.expect(:release_device, nil, [device])
86
+
87
+ RokuBuilder.stub(:device_manager, device_manager) do
88
+ ::Logger.stub(:new, logger) do
89
+ inspector.inspect(options: options)
90
+ end
82
91
  end
92
+ logger.verify
93
+ device_manager.verify
83
94
  end
84
95
  def test_inspector_inspect_old_interface
85
96
  logger = Minitest::Mock.new()
@@ -119,9 +130,20 @@ module RokuBuilder
119
130
  options = {inspect: true, in: File.join(test_files_path(InspectorTest), "test.pkg"), password: "password"}
120
131
  config, options = build_config_options_objects(InspectorTest, options, false)
121
132
  inspector = Inspector.new(config: config)
122
- ::Logger.stub(:new, logger) do
123
- inspector.inspect(options: options)
133
+
134
+ device_manager = Minitest::Mock.new
135
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
136
+ device_manager.expect(:reserve_device, device, no_lock: false)
137
+ device_manager.expect(:release_device, nil, [device])
138
+
139
+ RokuBuilder.stub(:device_manager, device_manager) do
140
+ ::Logger.stub(:new, logger) do
141
+ inspector.inspect(options: options)
142
+ end
124
143
  end
144
+
145
+ logger.verify
146
+ device_manager.verify
125
147
  end
126
148
 
127
149
  def test_screencapture
@@ -139,9 +161,19 @@ module RokuBuilder
139
161
  options = {screencapture: true }
140
162
  config, options = build_config_options_objects(InspectorTest, options, false)
141
163
  inspector = Inspector.new(config: config)
142
- File.stub(:open, nil, io) do
143
- inspector.screencapture(options: options)
164
+
165
+ device_manager = Minitest::Mock.new
166
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
167
+ device_manager.expect(:reserve_device, device, no_lock: false)
168
+ device_manager.expect(:release_device, nil, [device])
169
+
170
+ RokuBuilder.stub(:device_manager, device_manager) do
171
+ File.stub(:open, nil, io) do
172
+ inspector.screencapture(options: options)
173
+ end
144
174
  end
175
+ io.verify
176
+ device_manager.verify
145
177
  end
146
178
  def test_screencapture_png
147
179
  body = "<hr /><img src=\"pkgs/dev.png?time=1455629573\">"
@@ -158,8 +190,16 @@ module RokuBuilder
158
190
  options = {screencapture: true }
159
191
  config, options = build_config_options_objects(InspectorTest, options, false)
160
192
  inspector = Inspector.new(config: config)
161
- File.stub(:open, nil, io) do
162
- inspector.screencapture(options: options)
193
+
194
+ device_manager = Minitest::Mock.new
195
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
196
+ device_manager.expect(:reserve_device, device, no_lock: false)
197
+ device_manager.expect(:release_device, nil, [device])
198
+
199
+ RokuBuilder.stub(:device_manager, device_manager) do
200
+ File.stub(:open, nil, io) do
201
+ inspector.screencapture(options: options)
202
+ end
163
203
  end
164
204
  end
165
205
  end
@@ -9,10 +9,12 @@ module RokuBuilder
9
9
  RokuBuilder.class_variable_set(:@@dev, false)
10
10
  RokuBuilder.setup_plugins
11
11
  register_plugins(Linker)
12
+ @device_manager = Minitest::Mock.new
12
13
  @requests = []
13
14
  end
14
15
  def teardown
15
16
  @requests.each {|req| remove_request_stub(req)}
17
+ @device_manager.verify
16
18
  end
17
19
  def test_linker_parse_options_long
18
20
  parser = OptionParser.new
@@ -41,8 +43,14 @@ module RokuBuilder
41
43
  options = {deeplink: 'a:A, b:B:C, d:a\b'}
42
44
  config, options = build_config_options_objects(LinkerTest, options, false)
43
45
 
46
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
47
+ @device_manager.expect(:reserve_device, device, no_lock: false)
48
+ @device_manager.expect(:release_device, nil, [device])
49
+
44
50
  linker = Linker.new(config: config)
45
- linker.deeplink(options: options)
51
+ RokuBuilder.stub(:device_manager, @device_manager) do
52
+ linker.deeplink(options: options)
53
+ end
46
54
  end
47
55
  def test_linker_link_sideload
48
56
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/launch/dev?a=A&b=B:C&d=a%5Cb").
@@ -55,8 +63,14 @@ module RokuBuilder
55
63
  options = {deeplink: 'a:A, b:B:C, d:a\b', working: true}
56
64
  config, options = build_config_options_objects(LinkerTest, options, false)
57
65
 
66
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
67
+ @device_manager.expect(:reserve_device, device, no_lock: false)
68
+ @device_manager.expect(:release_device, nil, [device])
69
+
58
70
  linker = Linker.new(config: config)
59
- linker.deeplink(options: options)
71
+ RokuBuilder.stub(:device_manager, @device_manager) do
72
+ linker.deeplink(options: options)
73
+ end
60
74
  end
61
75
  def test_linker_link_sideload_current
62
76
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/launch/dev?a=A&b=B:C&d=a%5Cb").
@@ -72,8 +86,14 @@ module RokuBuilder
72
86
  config, options = build_config_options_objects(LinkerTest, options, false)
73
87
  end
74
88
 
89
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
90
+ @device_manager.expect(:reserve_device, device, no_lock: false)
91
+ @device_manager.expect(:release_device, nil, [device])
92
+
75
93
  linker = Linker.new(config: config)
76
- linker.deeplink(options: options)
94
+ RokuBuilder.stub(:device_manager, @device_manager) do
95
+ linker.deeplink(options: options)
96
+ end
77
97
  end
78
98
  def test_linker_link_app
79
99
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/launch/1234?a=A&b=B:C&d=a%5Cb").
@@ -82,8 +102,14 @@ module RokuBuilder
82
102
  options = {deeplink: 'a:A, b:B:C, d:a\b', app_id: "1234"}
83
103
  config, options = build_config_options_objects(LinkerTest, options, false)
84
104
 
105
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
106
+ @device_manager.expect(:reserve_device, device, no_lock: false)
107
+ @device_manager.expect(:release_device, nil, [device])
108
+
85
109
  linker = Linker.new(config: config)
86
- linker.deeplink(options: options)
110
+ RokuBuilder.stub(:device_manager, @device_manager) do
111
+ linker.deeplink(options: options)
112
+ end
87
113
  end
88
114
  def test_linker_link_nothing
89
115
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/launch/dev").
@@ -92,8 +118,14 @@ module RokuBuilder
92
118
  options = {deeplink: ''}
93
119
  config, options = build_config_options_objects(LinkerTest, options, false)
94
120
 
121
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
122
+ @device_manager.expect(:reserve_device, device, no_lock: false)
123
+ @device_manager.expect(:release_device, nil, [device])
124
+
95
125
  linker = Linker.new(config: config)
96
- linker.deeplink(options: options)
126
+ RokuBuilder.stub(:device_manager, @device_manager) do
127
+ linker.deeplink(options: options)
128
+ end
97
129
  end
98
130
  def test_linker_link_sideload_input
99
131
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/input?a=A&b=B:C&d=a%5Cb").
@@ -106,8 +138,14 @@ module RokuBuilder
106
138
  options = {input: 'a:A, b:B:C, d:a\b', working: true}
107
139
  config, options = build_config_options_objects(LinkerTest, options, false)
108
140
 
141
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
142
+ @device_manager.expect(:reserve_device, device, no_lock: false)
143
+ @device_manager.expect(:release_device, nil, [device])
144
+
109
145
  linker = Linker.new(config: config)
110
- linker.input(options: options)
146
+ RokuBuilder.stub(:device_manager, @device_manager) do
147
+ linker.input(options: options)
148
+ end
111
149
  end
112
150
  def test_linker_link_app_input
113
151
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/input?a=A&b=B:C&d=a%5Cb").
@@ -116,8 +154,14 @@ module RokuBuilder
116
154
  options = {input: 'a:A, b:B:C, d:a\b', app_id: "1234"}
117
155
  config, options = build_config_options_objects(LinkerTest, options, false)
118
156
 
157
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
158
+ @device_manager.expect(:reserve_device, device, no_lock: false)
159
+ @device_manager.expect(:release_device, nil, [device])
160
+
119
161
  linker = Linker.new(config: config)
120
- linker.input(options: options)
162
+ RokuBuilder.stub(:device_manager, @device_manager) do
163
+ linker.input(options: options)
164
+ end
121
165
  end
122
166
  def test_linker_link_nothing_input
123
167
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/input").
@@ -126,8 +170,14 @@ module RokuBuilder
126
170
  options = {input: ''}
127
171
  config, options = build_config_options_objects(LinkerTest, options, false)
128
172
 
173
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
174
+ @device_manager.expect(:reserve_device, device, no_lock: false)
175
+ @device_manager.expect(:release_device, nil, [device])
176
+
129
177
  linker = Linker.new(config: config)
130
- linker.input(options: options)
178
+ RokuBuilder.stub(:device_manager, @device_manager) do
179
+ linker.input(options: options)
180
+ end
131
181
  end
132
182
 
133
183
  def test_linker_list
@@ -143,13 +193,19 @@ module RokuBuilder
143
193
  options = {applist: true}
144
194
  config, options = build_config_options_objects(LinkerTest, options, false)
145
195
 
196
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
197
+ @device_manager.expect(:reserve_device, device, no_lock: false)
198
+ @device_manager.expect(:release_device, nil, [device])
199
+
146
200
  linker = Linker.new(config: config)
147
201
 
148
202
  print_count = 0
149
203
  did_print = Proc.new { |msg| print_count+=1 }
150
204
 
151
- linker.stub(:printf, did_print) do
152
- linker.applist(options: options)
205
+ RokuBuilder.stub(:device_manager, @device_manager) do
206
+ linker.stub(:printf, did_print) do
207
+ linker.applist(options: options)
208
+ end
153
209
  end
154
210
 
155
211
  assert_equal 6, print_count
@@ -10,14 +10,19 @@ module RokuBuilder
10
10
  RokuBuilder.setup_plugins
11
11
  register_plugins(Loader)
12
12
  @config, @options = build_config_options_objects(LoaderTest, {sideload: true, working: true}, false)
13
+ RokuBuilder.class_variable_set(:@@config, @config)
14
+ RokuBuilder.class_variable_set(:@@options, @options)
13
15
  @root_dir = @config.root_dir
14
- @device_config = @config.device_config
16
+ @device_config = @config.devices.first.last
15
17
  FileUtils.cp(File.join(@root_dir, "manifest_template"), File.join(@root_dir, "manifest"))
16
18
  @request_stubs = []
19
+ @device_manager = Minitest::Mock.new
20
+ @device = RokuBuilder::Device.new("roku", @config.raw[:devices][:roku])
17
21
  end
18
22
  def teardown
19
23
  FileUtils.rm(File.join(@root_dir, "manifest"))
20
24
  @request_stubs.each {|req| remove_request_stub(req)}
25
+ @device_manager.verify
21
26
  end
22
27
  def test_loader_parse_options_long
23
28
  parser = OptionParser.new
@@ -47,9 +52,13 @@ module RokuBuilder
47
52
  to_return(status: 200, body: "", headers: {}))
48
53
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
49
54
  to_return(status: 200, body: "Install Success", headers: {}))
55
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
56
+ @device_manager.expect(:release_device, nil, [@device])
50
57
 
51
- loader = Loader.new(config: @config)
52
- loader.sideload(options: @options)
58
+ RokuBuilder.stub(:device_manager, @device_manager) do
59
+ loader = Loader.new(config: @config)
60
+ loader.sideload(options: @options)
61
+ end
53
62
  end
54
63
  def test_loader_sideload_infile
55
64
  infile = File.join(@root_dir, "test.zip")
@@ -62,9 +71,13 @@ module RokuBuilder
62
71
  to_return(status: 200, body: "", headers: {}))
63
72
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
64
73
  to_return(status: 200, body: "Install Success", headers: {}))
74
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
75
+ @device_manager.expect(:release_device, nil, [@device])
65
76
 
66
- loader = Loader.new(config: @config)
67
- loader.sideload(options: @options)
77
+ RokuBuilder.stub(:device_manager, @device_manager) do
78
+ loader = Loader.new(config: @config)
79
+ loader.sideload(options: @options)
80
+ end
68
81
  end
69
82
  def test_loader_build_defining_folder_and_files
70
83
  loader = Loader.new(config: @config)
@@ -100,33 +113,49 @@ module RokuBuilder
100
113
  def test_loader_unload
101
114
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
102
115
  to_return(status: 200, body: "Delete Succeeded", headers: {}))
116
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
117
+ @device_manager.expect(:release_device, nil, [@device])
103
118
 
104
- loader = Loader.new(config: @config)
105
- loader.delete(options: @options)
119
+ RokuBuilder.stub(:device_manager, @device_manager) do
120
+ loader = Loader.new(config: @config)
121
+ loader.delete(options: @options)
122
+ end
106
123
  end
107
124
  def test_loader_unload_fail
108
125
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
109
126
  to_return(status: 200, body: "Delete Failed", headers: {}))
127
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
128
+ @device_manager.expect(:release_device, nil, [@device])
110
129
 
111
- loader = Loader.new(config: @config)
112
- assert_raises ExecutionError do
113
- loader.delete(options: @options)
130
+ RokuBuilder.stub(:device_manager, @device_manager) do
131
+ loader = Loader.new(config: @config)
132
+ assert_raises ExecutionError do
133
+ loader.delete(options: @options)
134
+ end
114
135
  end
115
136
  end
116
137
  def test_loader_squash
117
138
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
118
139
  to_return(status: 200, body: "Conversion succeeded", headers: {}))
140
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
141
+ @device_manager.expect(:release_device, nil, [@device])
119
142
 
120
- loader = Loader.new(config: @config)
121
- loader.squash(options: @options)
143
+ RokuBuilder.stub(:device_manager, @device_manager) do
144
+ loader = Loader.new(config: @config)
145
+ loader.squash(options: @options)
146
+ end
122
147
  end
123
148
  def test_loader_squash_fail
124
149
  @request_stubs.push(stub_request(:post, "http://#{@device_config[:ip]}/plugin_install").
125
150
  to_return(status: 200, body: "Conversion failed", headers: {}))
151
+ @device_manager.expect(:reserve_device, @device, no_lock: false)
152
+ @device_manager.expect(:release_device, nil, [@device])
126
153
 
127
- loader = Loader.new(config: @config)
128
- assert_raises ExecutionError do
129
- loader.squash(options: @options)
154
+ RokuBuilder.stub(:device_manager, @device_manager) do
155
+ loader = Loader.new(config: @config)
156
+ assert_raises ExecutionError do
157
+ loader.squash(options: @options)
158
+ end
130
159
  end
131
160
  end
132
161
  def test_copy_files
@@ -21,8 +21,12 @@ module RokuBuilder
21
21
  user: "user",
22
22
  password: "password"
23
23
  }
24
- @config.instance_variable_set(:@parsed, {device_config: device_config, init_params: {}})
25
24
  @monitor = Monitor.new(config: @config)
25
+ @device_manager = Minitest::Mock.new
26
+ @device = RokuBuilder::Device.new("roku", device_config)
27
+ end
28
+ def teardown
29
+ @device_manager.verify
26
30
  end
27
31
  def test_scripter_parse_options_long
28
32
  parser = OptionParser.new
@@ -51,11 +55,15 @@ module RokuBuilder
51
55
  sleep(0.1)
52
56
  "q"
53
57
  }
58
+ @device_manager.expect(:reserve_device, @device, no_lock: true)
59
+ @device_manager.expect(:release_device, nil, [@device])
54
60
 
55
- Readline.stub(:readline, readline) do
56
- Net::Telnet.stub(:new, @connection) do
57
- @connection.stub(:waitfor, waitfor, "txt") do
58
- @monitor.monitor(options: @options)
61
+ RokuBuilder.stub(:device_manager, @device_manager) do
62
+ Readline.stub(:readline, readline) do
63
+ Net::Telnet.stub(:new, @connection) do
64
+ @connection.stub(:waitfor, waitfor, "txt") do
65
+ @monitor.monitor(options: @options)
66
+ end
59
67
  end
60
68
  end
61
69
  end
@@ -73,11 +81,16 @@ module RokuBuilder
73
81
  sleep(0.1)
74
82
  "q"
75
83
  }
76
- Readline.stub(:readline, readline) do
77
- Net::Telnet.stub(:new, @connection) do
78
- @connection.stub(:waitfor, waitfor, "txt") do
79
- @monitor.stub(:manage_text, "") do
80
- @monitor.monitor(options: @options)
84
+ @device_manager.expect(:reserve_device, @device, no_lock: true)
85
+ @device_manager.expect(:release_device, nil, [@device])
86
+
87
+ RokuBuilder.stub(:device_manager, @device_manager) do
88
+ Readline.stub(:readline, readline) do
89
+ Net::Telnet.stub(:new, @connection) do
90
+ @connection.stub(:waitfor, waitfor, "txt") do
91
+ @monitor.stub(:manage_text, "") do
92
+ @monitor.monitor(options: @options)
93
+ end
81
94
  end
82
95
  end
83
96
  end
@@ -110,12 +123,16 @@ module RokuBuilder
110
123
  "q"
111
124
  end
112
125
  }
113
-
114
- Readline.stub(:readline, readline) do
115
- Net::Telnet.stub(:new, @connection) do
116
- @connection.stub(:waitfor, waitfor, "txt") do
117
- @connection.stub(:puts, puts) do
118
- @monitor.monitor(options: @options)
126
+ @device_manager.expect(:reserve_device, @device, no_lock: true)
127
+ @device_manager.expect(:release_device, nil, [@device])
128
+
129
+ RokuBuilder.stub(:device_manager, @device_manager) do
130
+ Readline.stub(:readline, readline) do
131
+ Net::Telnet.stub(:new, @connection) do
132
+ @connection.stub(:waitfor, waitfor, "txt") do
133
+ @connection.stub(:puts, puts) do
134
+ @monitor.monitor(options: @options)
135
+ end
119
136
  end
120
137
  end
121
138
  end
@@ -82,14 +82,23 @@ module RokuBuilder
82
82
  options = {}
83
83
  options[type] = input.to_s
84
84
  config, options = build_config_options_objects(NavigatorTest, options, false)
85
+
86
+ device_manager = Minitest::Mock.new
87
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
88
+ device_manager.expect(:reserve_device, device, no_lock: true)
89
+ device_manager.expect(:release_device, nil, [device])
90
+
85
91
  navigator = Navigator.new(config: config)
86
- if success
87
- navigator.send(type, options: options)
88
- else
89
- assert_raises ExecutionError do
92
+ RokuBuilder.stub(:device_manager, device_manager) do
93
+ if success
90
94
  navigator.send(type, options: options)
95
+ else
96
+ assert_raises ExecutionError do
97
+ navigator.send(type, options: options)
98
+ end
91
99
  end
92
100
  end
101
+ device_manager.verify
93
102
  end
94
103
 
95
104
  def test_navigator_screen_secret
@@ -116,8 +125,16 @@ module RokuBuilder
116
125
  logger.expect(:debug, nil, ["Send Command: /keypress/Rev"])
117
126
  end
118
127
 
119
- navigator.screen(options: options)
128
+ device_manager = Minitest::Mock.new
129
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
130
+ device_manager.expect(:reserve_device, device, no_lock: true)
131
+ device_manager.expect(:release_device, nil, [device])
132
+
133
+ RokuBuilder.stub(:device_manager, device_manager) do
134
+ navigator.screen(options: options)
135
+ end
120
136
 
137
+ device_manager.verify
121
138
  logger.verify
122
139
  Logger.set_testing
123
140
  end
@@ -231,9 +248,18 @@ module RokuBuilder
231
248
  options = {navigate: true}
232
249
  config, options = build_config_options_objects(NavigatorTest, options, false)
233
250
  navigator = Navigator.new(config: config)
234
- navigator.stub(:read_char, "\u0003") do
235
- navigator.navigate(options: options)
251
+
252
+ device_manager = Minitest::Mock.new
253
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
254
+ device_manager.expect(:reserve_device, device, no_lock: true)
255
+ device_manager.expect(:release_device, nil, [device])
256
+
257
+ RokuBuilder.stub(:device_manager, device_manager) do
258
+ navigator.stub(:read_char, "\u0003") do
259
+ navigator.navigate(options: options)
260
+ end
236
261
  end
262
+ device_manager.verify
237
263
  end
238
264
 
239
265
  def test_navigator_interactive_nav
@@ -249,7 +275,7 @@ module RokuBuilder
249
275
  @i += 1
250
276
  char
251
277
  }
252
- thread_new = lambda { |char|
278
+ thread_new = lambda { |char,device|
253
279
  assert_equal "<", char
254
280
  }
255
281
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/keypress/Rev").
@@ -257,19 +283,31 @@ module RokuBuilder
257
283
  options = {navigate: true}
258
284
  config, options = build_config_options_objects(NavigatorTest, options, false)
259
285
  navigator = Navigator.new(config: config)
260
- navigator.stub(:read_char, read_char) do
261
- Thread.stub(:new, thread_new, "<") do
262
- navigator.navigate(options: options)
286
+
287
+ device_manager = Minitest::Mock.new
288
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
289
+ device_manager.expect(:reserve_device, device, no_lock: true)
290
+ device_manager.expect(:release_device, nil, [device])
291
+
292
+ RokuBuilder.stub(:device_manager, device_manager) do
293
+ navigator.stub(:read_char, read_char) do
294
+ Thread.stub(:new, thread_new, "<") do
295
+ navigator.navigate(options: options)
296
+ end
263
297
  end
264
298
  end
299
+ device_manager.verify
265
300
  end
266
- def test_navigator_hendle_interactive_text
301
+ def test_navigator_handle_interactive_text
267
302
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/keypress/LIT_b").
268
303
  to_return(status: 200, body: "", headers: {}))
269
304
  options = {navigate: true}
270
305
  config, options = build_config_options_objects(NavigatorTest, options, false)
271
306
  navigator = Navigator.new(config: config)
272
- navigator.send(:handle_navigate_input, "b")
307
+
308
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
309
+
310
+ navigator.send(:handle_navigate_input, "b", device)
273
311
  end
274
312
  def test_navigator_hendle_interactive_command
275
313
  @requests.push(stub_request(:post, "http://192.168.0.100:8060/keypress/Play").
@@ -277,7 +315,10 @@ module RokuBuilder
277
315
  options = {navigate: true}
278
316
  config, options = build_config_options_objects(NavigatorTest, options, false)
279
317
  navigator = Navigator.new(config: config)
280
- navigator.send(:handle_navigate_input, "=")
318
+
319
+ device = RokuBuilder::Device.new("roku", config.raw[:devices][:roku])
320
+
321
+ navigator.send(:handle_navigate_input, "=", device)
281
322
  end
282
323
  def test_navigator_generate_mappings
283
324
  options = {navigate: true}