cornucopia 0.1.12 → 0.1.13

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
  SHA1:
3
- metadata.gz: 1d77b60c09f0e90ba7b71c236ace93759f505747
4
- data.tar.gz: e28665b7fae1b76f551d0f6a6bb54a8b140ff376
3
+ metadata.gz: 3346fed2eb1ac7927737bf2bbbdd9fdd4c82edca
4
+ data.tar.gz: 6adeed695e6be6f05292d6327272290fe2a34b41
5
5
  SHA512:
6
- metadata.gz: c7042a179f4d6b33772dd5ffd31f1fac82698a32ce7c1d7a745e234c5270a692e7840fb757dea98f04e5925fdda64a885390519cdf55fbebd48bf3cb51aaa1ed
7
- data.tar.gz: 415cf0bf47a7636c6dcdb9a053fb1ec08aa5d18ea05df93378c7899639f1c25430c7d1f680efb9512a78067c1aca12c7ef5825b089baa7939214c59f31a28d98
6
+ metadata.gz: f2a81685b388928f567d25f7fc754d4d128f0ba9c2479391ad784eb79c78800d5fc200650378c48d16195e49c69b3f7cee17ab29f48c6ca457b74f553def7bab
7
+ data.tar.gz: 462a916d48b5f1c25da256e68ae77b8dd87fd32a2a26c3074caedf2cfe167371e82dce94fa89ef9275cc966bf12fa46b7b658e7e3362b43b66ec7f364eef6f62
data/.gitignore CHANGED
@@ -48,4 +48,5 @@ spec/dummy/cornucopia_report/
48
48
  spec/dummy/sample_report/
49
49
  spec/dummy/.rspec
50
50
  test_reports/*
51
- .idea/
51
+ .idea/
52
+ **/.DS_Store
@@ -52,6 +52,8 @@ module Cornucopia
52
52
  if !support_options[:__cornucopia_no_analysis] &&
53
53
  (Cornucopia::Util::Configuration.analyze_selector_exceptions ||
54
54
  support_options[:__cornucopia_retry_with_found])
55
+ support_options.merge!({ __cornucopia_no_analysis: true })
56
+
55
57
  find_action = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(self,
56
58
  {},
57
59
  support_options,
@@ -60,7 +62,7 @@ module Cornucopia
60
62
 
61
63
  if find_action.perform_analysis(Cornucopia::Util::Configuration.retry_match_with_found ||
62
64
  support_options[:__cornucopia_retry_with_found])
63
- return_value = find_action.simple_run rescue nil
65
+ return_value = find_action.simple_run({ __cornucopia_no_analysis: true }) rescue nil
64
66
  return_value ||= find_action.return_value
65
67
  else
66
68
  raise error
@@ -1,8 +1,5 @@
1
1
  require ::File.expand_path("../cornucopia", File.dirname(__FILE__))
2
- require ::File.expand_path("../cornucopia/factory_girl/dynamic_association", File.dirname(__FILE__))
3
-
4
2
  load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__FILE__))
5
- load ::File.expand_path("capybara/install_matcher_extensions.rb", File.dirname(__FILE__))
6
3
  load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
7
4
 
8
5
  Around do |scenario, block|
@@ -28,6 +25,13 @@ After do |scenario|
28
25
  configured_report.add_report_objects scenario: scenario, cucumber: self
29
26
  configured_report.generate_report(report)
30
27
  end
28
+
29
+ # Cornucopia::DiagnosticsReportBuilder.current_report.within_section("Error:") do |report|
30
+ # report_generator = Cornucopia::Configuration.report_configuration(:cucumber)
31
+ #
32
+ # report_generator.add_report_objects(self: self, scenario: scenario)
33
+ # report_generator.generate_report_for_object(report, diagnostics_name: scenario.file_colon_line)
34
+ # end
31
35
  end
32
36
  end
33
37
 
@@ -1,8 +1,5 @@
1
1
  require ::File.expand_path("../cornucopia", File.dirname(__FILE__))
2
- require ::File.expand_path("../cornucopia/factory_girl/dynamic_association", File.dirname(__FILE__))
3
-
4
2
  load ::File.expand_path("capybara/install_finder_extensions.rb", File.dirname(__FILE__))
5
- load ::File.expand_path("capybara/install_matcher_extensions.rb", File.dirname(__FILE__))
6
3
  load ::File.expand_path("site_prism/install_element_extensions.rb", File.dirname(__FILE__))
7
4
 
8
5
  Spinach.hooks.before_scenario do |scenario, step_definitions|
@@ -42,6 +39,19 @@ def debug_failed_step(failure_description, step_data, exception, location, step_
42
39
 
43
40
  configured_report.generate_report(report)
44
41
  end
42
+
43
+ # Cornucopia::Util::ReportBuilder.current_report.within_section("#{failure_description}:") do |report|
44
+ # report_generator = Cornucopia::Configuration.report_configuration(:spinach)
45
+ #
46
+ # report_generator.add_report_objects(failure_description: "#{failure_description} at:, #{location[0]}:#{location[1]}",
47
+ # step_data: step_data,
48
+ # exception: exception,
49
+ # location: location,
50
+ # step_definitions: step_definitions,
51
+ # running_scenario: @running_scenario
52
+ # )
53
+ # report_generator.generate_report_for_object(report, diagnostics_name: "#{step_data.name}:#{step_data.line}")
54
+ # end
45
55
  end
46
56
 
47
57
  Spinach.hooks.after_run do |status|
@@ -393,7 +393,7 @@ module Cornucopia
393
393
 
394
394
  # This setting is used by the Capybara utilities.
395
395
  #
396
- # When Capybara::Node.find throws an exception, if this is set, the system will try to
396
+ # When Capybara::Node.analyze_selector throws an exception, if this is set, the system will try to
397
397
  # use the FinderDiagnostics to output some diagnostic information about the page and the
398
398
  # selector to try to assist in determining what happened.
399
399
  def analyze_selector_exceptions
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.12"
2
+ VERSION = "0.1.13"
3
3
  end
@@ -468,6 +468,92 @@ describe Cornucopia::Capybara::FinderDiagnostics, type: :feature do
468
468
  end
469
469
  end
470
470
 
471
+ it "works with assert_selector" do
472
+ # TODO: figure out why this test appears to be flakey sometimes.
473
+ begin
474
+ Cornucopia::Util::Configuration.retry_match_with_found = true
475
+
476
+ allow_any_instance_of(::Capybara::Node::Element).to receive(:outerHTML).and_return(nil)
477
+
478
+ expect(::Capybara.current_session).
479
+ to receive(:evaluate_script).at_least(1).times.and_raise(::Capybara::NotSupportedByDriverError)
480
+ expect_any_instance_of(::Selenium::WebDriver::Driver).
481
+ to receive(:execute_script).at_least(1).times.and_raise(::Capybara::NotSupportedByDriverError)
482
+
483
+ base_object = ::Capybara.current_session.find(:css, "#hidden-div", visible: false)
484
+ button = base_object.assert_selector("Still cool!", count: 1)
485
+
486
+ expect(button).to be true
487
+
488
+ report_page = CornucopiaReportApp.cornucopia_report_page
489
+ report_page.load(report_name: "cornucopia_report", base_folder: "cornucopia_report")
490
+ report_page.contents do |contents_frame|
491
+ contents_frame.errors[1].more_details.show_hide.click
492
+ expect(contents_frame.errors.length).to be == 2
493
+ expect(contents_frame.errors[1].tables[0].rows.last.labels[0].text).not_to be == "Retrying action:"
494
+ expect(contents_frame.errors[1].more_details.details.rows.last.labels[0].text).to be == "Retrying action:"
495
+ expect(contents_frame.errors[1].more_details.details.rows.last.values[0].text).to be == "Found"
496
+ end
497
+ ensure
498
+ Cornucopia::Util::Configuration.retry_match_with_found = false
499
+ end
500
+ end
501
+
502
+ it "works with assert_no_selector" do
503
+ # 621023375412314903581404663773388410917
504
+ begin
505
+ Cornucopia::Util::Configuration.retry_match_with_found = true
506
+
507
+ allow_any_instance_of(::Capybara::Node::Element).to receive(:outerHTML).and_return(nil)
508
+
509
+ allow(::Capybara.current_session).
510
+ to receive(:evaluate_script).and_raise(::Capybara::NotSupportedByDriverError)
511
+ allow_any_instance_of(::Selenium::WebDriver::Driver).
512
+ to receive(:execute_script).and_raise(::Capybara::NotSupportedByDriverError)
513
+
514
+ base_object = ::Capybara.current_session.find(:css, "#hidden-div", visible: false)
515
+ find_button = base_object.all("#hidden-cool-button", count: 1, visible: false)
516
+ empty_find_button = base_object.all("#hidden-cool-button", count: 1, visible: false)
517
+
518
+ allow_any_instance_of(::Cornucopia::Capybara::FinderDiagnostics::FindAction).
519
+ to receive(:all_elements).and_return []
520
+ allow_any_instance_of(::Cornucopia::Capybara::FinderDiagnostics::FindAction).
521
+ to receive(:all_other_elements).and_return []
522
+ allow(empty_find_button).to receive(:size).and_return 0
523
+ allow_any_instance_of(::Capybara::Node::Element).
524
+ to receive(:all).
525
+ and_call_original
526
+ allow_any_instance_of(::Capybara::Node::Element).
527
+ to receive(:all).
528
+ with("Still cool!", { count: 1 }).
529
+ and_return(find_button)
530
+ allow_any_instance_of(::Capybara::Node::Element).
531
+ to receive(:all).
532
+ with(instance_of(Symbol), "Still cool!", { visible: false, __cornucopia_no_analysis: true }).
533
+ and_return(empty_find_button)
534
+ allow_any_instance_of(::Capybara::Node::Element).
535
+ to receive(:all).
536
+ with("Still cool!", { visible: false, __cornucopia_no_analysis: true }).
537
+ and_return(empty_find_button)
538
+
539
+ button = base_object.assert_no_selector("Still cool!", count: 1)
540
+
541
+ expect(button).to be true
542
+
543
+ report_page = CornucopiaReportApp.cornucopia_report_page
544
+ report_page.load(report_name: "cornucopia_report", base_folder: "cornucopia_report")
545
+ report_page.contents do |contents_frame|
546
+ contents_frame.errors[0].more_details.show_hide.click
547
+ expect(contents_frame.errors.length).to be == 1
548
+ expect(contents_frame.errors[0].tables[0].rows.last.labels[0].text).not_to be == "Retrying action:"
549
+ expect(contents_frame.errors[0].more_details.details.rows.last.labels[0].text).to be == "Retrying action:"
550
+ expect(contents_frame.errors[0].more_details.details.rows.last.values[0].text).to be == "Not Found"
551
+ end
552
+ ensure
553
+ Cornucopia::Util::Configuration.retry_match_with_found = false
554
+ end
555
+ end
556
+
471
557
  it "finds selection options using the from option" do
472
558
  report = Cornucopia::Util::ReportBuilder.current_report
473
559
 
@@ -0,0 +1,344 @@
1
+ require "spec_helper"
2
+ require ::File.expand_path("../../../lib/cornucopia/capybara/matcher_extensions", File.dirname(__FILE__))
3
+
4
+ describe Cornucopia::Capybara::MatcherExtensions, type: :feature do
5
+ # Make sure that all tests start clean and get cleaned up afterwards...
6
+ around(:example) do |example|
7
+ expect(File.directory?(Rails.root.join("cornucopia_report/"))).to be_falsey
8
+
9
+ begin
10
+ @file_name_1 = generate_report_file("report_1")
11
+
12
+ example.run
13
+ ensure
14
+ if (Cornucopia::Util::ReportBuilder.class_variable_get("@@current_report"))
15
+ Cornucopia::Util::ReportBuilder.current_report.close
16
+ end
17
+
18
+ ::Capybara.current_session.driver.window_handles.each do |handle|
19
+ if handle != ::Capybara.current_session.driver.current_window_handle
20
+ ::Capybara.current_session.driver.close_window(handle)
21
+ end
22
+ end
23
+
24
+ FileUtils.rm_rf Rails.root.join("cornucopia_report/")
25
+ FileUtils.rm_rf Rails.root.join("sample_report/")
26
+ end
27
+ end
28
+
29
+ before(:context) do
30
+ @file_name_1 = generate_report_file("report_1")
31
+ ::Capybara.app = Rack::File.new File.absolute_path(File.join(File.dirname(@file_name_1), "../.."))
32
+ end
33
+
34
+ describe "#__cornucopia_assert_selector_function" do
35
+ it "should retry if a Selenium cache error is thrown" do
36
+ index_page = CornucopiaReportApp.index_page
37
+
38
+ index_page.load base_folder: "sample_report"
39
+
40
+ index_page.contents do |contents_frame|
41
+ found_elements = contents_frame.assert_selector("a", __cornucopia_no_analysis: true)
42
+
43
+ num_retries = rand(1..(Cornucopia::Util::Configuration.selenium_cache_retry_count - 1))
44
+ time_count = num_retries
45
+ num_calls = 0
46
+
47
+ allow(contents_frame.page.document).
48
+ to receive(:__cornucopia_orig_assert_selector) do |*args|
49
+ num_calls += 1
50
+
51
+ if time_count > 0
52
+ time_count -= 1
53
+ raise Selenium::WebDriver::Error::StaleElementReferenceError.new
54
+ end
55
+
56
+ expect(args).to be == ["a"]
57
+ found_elements
58
+ end
59
+
60
+ second_found = contents_frame.assert_selector("a")
61
+
62
+ allow(contents_frame.page.document).
63
+ to receive(:__cornucopia_orig_assert_selector).
64
+ and_call_original
65
+
66
+ # I realize that this is almost like testing that the stub worked, which we don't need to test.
67
+ # However, we are really testing that the results returned by the stub are passed back all the way
68
+ # Which we do need to test.
69
+ expect(second_found).to be == found_elements
70
+ expect(time_count).to be == 0
71
+ expect(num_calls).to be == num_retries + 1
72
+ end
73
+ end
74
+
75
+ it "should call __cornucopia__analyze_selector if it cannot resolve the stale reference" do
76
+ index_page = CornucopiaReportApp.index_page
77
+
78
+ index_page.load base_folder: "sample_report"
79
+
80
+ index_page.contents do |contents_frame|
81
+ found_elements = contents_frame.assert_selector("a", __cornucopia_no_analysis: true)
82
+
83
+ # Because we are over riding the original call, we just stub this out
84
+ # because it cannot work properly.
85
+ expect(contents_frame.page.document).
86
+ to receive(:__cornucopia__analyze_selector).
87
+ and_return(found_elements)
88
+
89
+ allow(contents_frame.page.document).
90
+ to receive(:__cornucopia_orig_assert_selector) do |*args|
91
+ raise Selenium::WebDriver::Error::StaleElementReferenceError.new
92
+ end
93
+
94
+ second_found = contents_frame.assert_selector("a")
95
+
96
+ allow(contents_frame.page.document).
97
+ to receive(:__cornucopia_orig_assert_selector).
98
+ and_call_original
99
+
100
+ # I realize that this is almost like testing that the stub worked, which we don't need to test.
101
+ # However, we are really testing that the results returned by the stub are passed back all the way
102
+ # Which we do need to test.
103
+ expect(second_found).to be == found_elements
104
+ end
105
+ end
106
+
107
+ it "should call __cornucopia__analyze_selector if an exception is thrown" do
108
+ index_page = CornucopiaReportApp.index_page
109
+
110
+ index_page.load base_folder: "sample_report"
111
+
112
+ index_page.contents do |contents_frame|
113
+ found_elements = contents_frame.assert_no_selector("notfound .report-block", __cornucopia_no_analysis: true)
114
+
115
+ # Because we are over riding the original call, we just stub this out
116
+ # because it cannot work properly.
117
+ expect(contents_frame.page.document).
118
+ to receive(:__cornucopia__analyze_selector).
119
+ and_return(found_elements)
120
+
121
+ allow(contents_frame.page.document).
122
+ to receive(:__cornucopia_orig_assert_no_selector) do |*args|
123
+ raise "This is an error"
124
+ end
125
+
126
+ second_found = contents_frame.assert_no_selector(".report-block")
127
+
128
+ allow(contents_frame.page.document).
129
+ to receive(:__cornucopia_orig_assert_no_selector).
130
+ and_call_original
131
+
132
+ # I realize that this is almost like testing that the stub worked, which we don't need to test.
133
+ # However, we are really testing that the results returned by the stub are passed back all the way
134
+ # Which we do need to test.
135
+ expect(second_found).to be == found_elements
136
+ end
137
+ end
138
+ end
139
+
140
+ def get_object(object_type)
141
+ case (object_type)
142
+ when :page
143
+ ::Capybara.page
144
+
145
+ when :document
146
+ ::Capybara.page.document
147
+
148
+ when :body
149
+ ::Capybara.page.document.find("html")
150
+ end
151
+ end
152
+
153
+ [:page, :document, :body].each do |object_type|
154
+ describe "#__cornucopia__analyze_selector for #{object_type}" do
155
+ it "does nothing if this is called from the analysis function" do
156
+ index_page = CornucopiaReportApp.index_page
157
+
158
+ index_page.load base_folder: "sample_report"
159
+
160
+ Cornucopia::Util::Configuration.analyze_find_exceptions = true
161
+
162
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).not_to receive(:new)
163
+
164
+ expect { get_object(object_type).assert_selector "boody", __cornucopia_no_analysis: true }.
165
+ to raise_error(::Capybara::ExpectationNotMet)
166
+ end
167
+
168
+ it "does nothing if this is called from the analysis function no_selector" do
169
+ index_page = CornucopiaReportApp.index_page
170
+
171
+ index_page.load base_folder: "sample_report"
172
+
173
+ Cornucopia::Util::Configuration.analyze_find_exceptions = true
174
+
175
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).not_to receive(:new)
176
+
177
+ expect { get_object(object_type).assert_no_selector "body", __cornucopia_no_analysis: true }.
178
+ to raise_error(::Capybara::ExpectationNotMet)
179
+ end
180
+
181
+ it "does nothing if configuration is turned off" do
182
+ begin
183
+ index_page = CornucopiaReportApp.index_page
184
+
185
+ index_page.load base_folder: "sample_report"
186
+
187
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = false
188
+
189
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).not_to receive(:new)
190
+
191
+ expect { get_object(object_type).assert_selector "boody" }.to raise_error(::Capybara::ExpectationNotMet)
192
+ ensure
193
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
194
+ end
195
+ end
196
+
197
+ it "does nothing if configuration is turned off no_selector" do
198
+ begin
199
+ index_page = CornucopiaReportApp.index_page
200
+
201
+ index_page.load base_folder: "sample_report"
202
+
203
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = false
204
+
205
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).not_to receive(:new)
206
+
207
+ expect { get_object(object_type).assert_no_selector "body" }.to raise_error(::Capybara::ExpectationNotMet)
208
+ ensure
209
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
210
+ end
211
+ end
212
+
213
+ it "calls perform analysis with values from the configuration and returns the results" do
214
+ begin
215
+ index_page = CornucopiaReportApp.index_page
216
+
217
+ index_page.load base_folder: "sample_report"
218
+
219
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
220
+
221
+ the_obj = get_object(object_type)
222
+ stubbed_finder = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(the_obj, {}, {}, "boody")
223
+ found_body = the_obj.assert_selector("body")
224
+
225
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).to receive(:new).and_return(stubbed_finder)
226
+
227
+ retry_found = [true, false].sample
228
+ # retry_alt = [true, false].sample
229
+
230
+ Cornucopia::Util::Configuration.retry_match_with_found = retry_found
231
+ # Cornucopia::Util::Configuration.alternate_retry = retry_alt
232
+
233
+ retry_found = retry_found || nil
234
+ # retry_alt = retry_alt || nil
235
+
236
+ expect(stubbed_finder).to receive(:perform_analysis).with(retry_found).and_return true
237
+ expect(stubbed_finder).to receive(:return_value).and_return found_body
238
+
239
+ expect(the_obj.assert_selector("boody")).to be == found_body
240
+ ensure
241
+ Cornucopia::Util::Configuration.retry_match_with_found = false
242
+ # Cornucopia::Util::Configuration.alternate_retry = false
243
+ end
244
+ end
245
+
246
+ it "calls perform analysis with values from the configuration and returns the results no_selector" do
247
+ begin
248
+ index_page = CornucopiaReportApp.index_page
249
+
250
+ index_page.load base_folder: "sample_report"
251
+
252
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
253
+
254
+ the_obj = get_object(object_type)
255
+ stubbed_finder = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(the_obj, {}, {}, "body")
256
+ found_body = the_obj.assert_no_selector("boody")
257
+
258
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).to receive(:new).and_return(stubbed_finder)
259
+
260
+ retry_found = [true, false].sample
261
+ # retry_alt = [true, false].sample
262
+
263
+ Cornucopia::Util::Configuration.retry_match_with_found = retry_found
264
+ # Cornucopia::Util::Configuration.alternate_retry = retry_alt
265
+
266
+ retry_found = retry_found || nil
267
+ # retry_alt = retry_alt || nil
268
+
269
+ expect(stubbed_finder).to receive(:perform_analysis).with(retry_found).and_return true
270
+ expect(stubbed_finder).to receive(:return_value).and_return found_body
271
+
272
+ expect(the_obj.assert_no_selector("body")).to be == found_body
273
+ ensure
274
+ Cornucopia::Util::Configuration.retry_match_with_found = false
275
+ # Cornucopia::Util::Configuration.alternate_retry = false
276
+ end
277
+ end
278
+
279
+ it "re-raises the last error if the analysis doesn't find anything" do
280
+ begin
281
+ index_page = CornucopiaReportApp.index_page
282
+
283
+ index_page.load base_folder: "sample_report"
284
+
285
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
286
+
287
+ the_obj = get_object(object_type)
288
+ stubbed_finder = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(the_obj, {}, {}, "boody")
289
+ # found_body = the_obj.assert_selector("boody")
290
+
291
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).to receive(:new).and_return(stubbed_finder)
292
+
293
+ retry_found = [true, false].sample
294
+ # retry_alt = [true, false].sample
295
+
296
+ Cornucopia::Util::Configuration.retry_match_with_found = retry_found
297
+ # Cornucopia::Util::Configuration.alternate_retry = retry_alt
298
+
299
+ retry_found = retry_found || nil
300
+ # retry_alt = retry_alt || nil
301
+
302
+ expect(stubbed_finder).to receive(:perform_analysis).with(retry_found).and_return false
303
+
304
+ expect { (the_obj.assert_selector("boody")) }.to raise_error(::Capybara::ExpectationNotMet)
305
+ ensure
306
+ Cornucopia::Util::Configuration.retry_match_with_found = false
307
+ # Cornucopia::Util::Configuration.alternate_retry = false
308
+ end
309
+ end
310
+
311
+ it "re-raises the last error if the analysis doesn't find anything no_selector" do
312
+ begin
313
+ index_page = CornucopiaReportApp.index_page
314
+
315
+ index_page.load base_folder: "sample_report"
316
+
317
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
318
+
319
+ the_obj = get_object(object_type)
320
+ stubbed_finder = Cornucopia::Capybara::FinderDiagnostics::FindAction.new(the_obj, {}, {}, "body")
321
+ # found_body = the_obj.assert_no_selector("body")
322
+
323
+ expect(Cornucopia::Capybara::FinderDiagnostics::FindAction).to receive(:new).and_return(stubbed_finder)
324
+
325
+ retry_found = [true, false].sample
326
+ # retry_alt = [true, false].sample
327
+
328
+ Cornucopia::Util::Configuration.retry_match_with_found = retry_found
329
+ # Cornucopia::Util::Configuration.alternate_retry = retry_alt
330
+
331
+ retry_found = retry_found || nil
332
+ # retry_alt = retry_alt || nil
333
+
334
+ expect(stubbed_finder).to receive(:perform_analysis).with(retry_found).and_return false
335
+
336
+ expect { (the_obj.assert_no_selector("body")) }.to raise_error(::Capybara::ExpectationNotMet)
337
+ ensure
338
+ Cornucopia::Util::Configuration.retry_match_with_found = false
339
+ # Cornucopia::Util::Configuration.alternate_retry = false
340
+ end
341
+ end
342
+ end
343
+ end
344
+ end
@@ -199,6 +199,22 @@ describe "Cornucopia::Util::Configuration" do
199
199
  end
200
200
  end
201
201
 
202
+ describe "#analyze_selector_exceptions" do
203
+ it "#can read the default" do
204
+ expect(Cornucopia::Util::Configuration.analyze_selector_exceptions).to be_truthy
205
+ end
206
+
207
+ it "#can set the value" do
208
+ begin
209
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = false
210
+
211
+ expect(Cornucopia::Util::Configuration.analyze_selector_exceptions).to be_falsy
212
+ ensure
213
+ Cornucopia::Util::Configuration.analyze_selector_exceptions = true
214
+ end
215
+ end
216
+ end
217
+
202
218
  describe "#retry_with_found" do
203
219
  it "#can read the default" do
204
220
  expect(Cornucopia::Util::Configuration.retry_with_found).to be_falsy
@@ -215,6 +231,22 @@ describe "Cornucopia::Util::Configuration" do
215
231
  end
216
232
  end
217
233
 
234
+ describe "#retry_match_with_found" do
235
+ it "#can read the default" do
236
+ expect(Cornucopia::Util::Configuration.retry_match_with_found).to be_falsy
237
+ end
238
+
239
+ it "#can set the value" do
240
+ begin
241
+ Cornucopia::Util::Configuration.retry_match_with_found = true
242
+
243
+ expect(Cornucopia::Util::Configuration.retry_match_with_found).to be_truthy
244
+ ensure
245
+ Cornucopia::Util::Configuration.retry_match_with_found = false
246
+ end
247
+ end
248
+ end
249
+
218
250
  describe "#auto_open_report_after_generation" do
219
251
  after(:each) do
220
252
  Cornucopia::Util::Configuration.class_variable_get(:@@configurations).open_report_settings = { default: false }
@@ -234,6 +266,44 @@ describe "Cornucopia::Util::Configuration" do
234
266
  end
235
267
 
236
268
  describe "#open_report_after_generation" do
269
+ after(:each) do
270
+ Cornucopia::Util::Configuration.class_variable_get(:@@configurations).open_report_settings = { default: false }
271
+ end
272
+
273
+ it "returns the default value" do
274
+ def_value = [true, false].sample
275
+
276
+ Cornucopia::Util::Configuration.auto_open_report_after_generation(def_value)
277
+ expect(Cornucopia::Util::Configuration.open_report_after_generation(Faker::Lorem.word)).to eq def_value
278
+ end
279
+
280
+ it "returns the value for a report" do
281
+ def_value = [true, false].sample
282
+ report = Faker::Lorem.word
283
+
284
+ Cornucopia::Util::Configuration.auto_open_report_after_generation(def_value)
285
+ Cornucopia::Util::Configuration.auto_open_report_after_generation(!def_value, report)
286
+
287
+ expect(Cornucopia::Util::Configuration.open_report_after_generation("#{report} not")).to eq def_value
288
+ expect(Cornucopia::Util::Configuration.open_report_after_generation(report)).to eq !def_value
289
+ end
290
+ end
291
+
292
+ describe "#base_folder" do
293
+ it "#can read the default" do
294
+ expect(Cornucopia::Util::Configuration.base_folder).to eq "cornucopia_report"
295
+ end
296
+
297
+ it "#can set the value" do
298
+ begin
299
+ base_value = Faker::Lorem.sentence
300
+ Cornucopia::Util::Configuration.base_folder = base_value
301
+
302
+ expect(Cornucopia::Util::Configuration.base_folder).to eq base_value
303
+ ensure
304
+ Cornucopia::Util::Configuration.base_folder = "cornucopia_report"
305
+ end
306
+ end
237
307
  end
238
308
 
239
309
  # describe "#alternate_retry" do
@@ -362,6 +362,25 @@ describe Cornucopia::Util::ConfiguredReport do
362
362
  end
363
363
 
364
364
  describe "#export_field_record" do
365
+ it "doesn't crash if there is an exception" do
366
+ string_val = "string"
367
+
368
+ Cornucopia::Util::ReportTable.new do |report_table|
369
+ allow(report_table).to receive(:write_stats).and_call_original
370
+ expect(report_table).to receive(:write_stats).with(:string_val, "string", {}).and_raise(Exception, "This is an error")
371
+
372
+ simple_report.export_field_record({ report_element: [:string_val] },
373
+ string_val,
374
+ :string_val,
375
+ report_table,
376
+ 0,
377
+ report_object_set: true)
378
+
379
+ expect(report_table.full_table).to match /Configured Report Error/
380
+ expect(report_table.full_table).to match /This is an error/
381
+ end
382
+ end
383
+
365
384
  it "takes a passed in parent" do
366
385
  string_val = "string"
367
386
 
data/spec/rails_helper.rb CHANGED
@@ -40,4 +40,4 @@ RSpec.configure do |config|
40
40
  # The different available types are documented in the features, such as in
41
41
  # https://relishapp.com/rspec/rspec-rails/docs
42
42
  config.infer_spec_type_from_file_location!
43
- end
43
+ end
data/spec/spec_helper.rb CHANGED
@@ -58,7 +58,7 @@ require ::File.expand_path("../lib/cornucopia/util/configuration", File.dirname(
58
58
 
59
59
  Capybara.default_driver = :selenium
60
60
 
61
- # Cornucopia::Util::Configuration.seed = 559946548704735007565227883040284615792
61
+ # Cornucopia::Util::Configuration.seed = 1
62
62
  RSpec.configure do |config|
63
63
  config.around(:each) do |example|
64
64
  @seed_value = Cornucopia::Util::Configuration.seed ||
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cornucopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealNobody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-09 00:00:00.000000000 Z
11
+ date: 2015-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -230,7 +230,6 @@ files:
230
230
  - lib/cornucopia/capybara/matcher_extensions.rb
231
231
  - lib/cornucopia/capybara/page_diagnostics.rb
232
232
  - lib/cornucopia/cucumber_hooks.rb
233
- - lib/cornucopia/factory_girl/dynamic_association.rb
234
233
  - lib/cornucopia/rspec_hooks.rb
235
234
  - lib/cornucopia/site_prism/element_extensions.rb
236
235
  - lib/cornucopia/site_prism/install_element_extensions.rb
@@ -300,6 +299,7 @@ files:
300
299
  - spec/fixtures/sample_page.html
301
300
  - spec/lib/capybara/finder_diagnostics_spec.rb
302
301
  - spec/lib/capybara/finder_extensions_spec.rb
302
+ - spec/lib/capybara/matcher_extensions_spec.rb
303
303
  - spec/lib/capybara/page_diagnostics_spec.rb
304
304
  - spec/lib/site_prism/element_extensions_spec.rb
305
305
  - spec/lib/site_prism/page_application_spec.rb
@@ -389,6 +389,7 @@ test_files:
389
389
  - spec/fixtures/sample_page.html
390
390
  - spec/lib/capybara/finder_diagnostics_spec.rb
391
391
  - spec/lib/capybara/finder_extensions_spec.rb
392
+ - spec/lib/capybara/matcher_extensions_spec.rb
392
393
  - spec/lib/capybara/page_diagnostics_spec.rb
393
394
  - spec/lib/site_prism/element_extensions_spec.rb
394
395
  - spec/lib/site_prism/page_application_spec.rb
@@ -1,14 +0,0 @@
1
- module Cornucopia
2
- module FactoryGirl
3
- class DynamicAssociations
4
- ##
5
- # association creates an association which allows arguments or will call a block to create the
6
- # associated object.
7
- #
8
- #
9
- def association(name, options, &block)
10
- options
11
- end
12
- end
13
- end
14
- end