effective_test_bot 0.4.12 → 0.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ede27ddd554e49edc914d193530a5d0d90b1334
4
- data.tar.gz: 30ad17c211358cf211bd583d58044a44ec4a8946
3
+ metadata.gz: 3d9f3e47968588a874f9e16b0fbefa9e98ee9aee
4
+ data.tar.gz: c025706727691c283a8d99a1e902ae4ae5d61cc4
5
5
  SHA512:
6
- metadata.gz: 13471d53e1e4cf34d78dae3b4802567c862c2eb93517b0503926fc367e7b42e3b7e9c1785ef5e74abb989e95facaccaa6846e7778db43717ac3a2e354566f7d4
7
- data.tar.gz: 1d9b51c137546d51ef794dd2ed9e984e7fcc5bbba5e45c57882be783cf006f3dee0519450ca10c6be5d1f984e1496d1ae31c856a32a68285ec51c4bc3fdbacbe
6
+ metadata.gz: ffecc7b971cf73a4bf2d62e1c8a20d7978a4b81173fe2329c5da48fa5b5072b4ab9dd42bdd66420ee8182c94bafb379621c8d9dc9fa01a9469d82c1745ffe4a3
7
+ data.tar.gz: 0fbab2527ee173d00b150aad9f15a038736d0a067b6649ec9b72c30e535dec983a3037da1a56a5e685d8162ebaca445d1baa03042f9442f0c9c5a00cdc56c2ab
data/README.md CHANGED
@@ -83,7 +83,7 @@ Finally, to test that your testing environment is set up correctly run `rake tes
83
83
 
84
84
  You now have effective_test_bot configured and you're ready to go.
85
85
 
86
- # How to use this gem
86
+ ## How to use this gem
87
87
 
88
88
  Effective TestBot provides 4 areas of support in writing [minitest](https://github.com/seattlerb/minitest) [capybara](https://github.com/jnicklas/capybara) tests. As a developer, use this gem to:
89
89
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '0.4.12'.freeze
2
+ VERSION = '0.4.13'.freeze
3
3
  end
@@ -42,8 +42,12 @@ module EffectiveTestBotAssertions
42
42
  end
43
43
  end
44
44
 
45
- def assert_submit_input(message = "(submit_input) Expected one or more input[type='submit'] to be present")
46
- assert_selector 'input[type=submit]', message
45
+ def assert_form(selector, message = "(form) Expected visible form with selector :selector: to be present")
46
+ assert all(selector).present?, message.sub(':selector', selector)
47
+ end
48
+
49
+ def assert_submit_input(message = "(submit_input) Expected one or more visible input[type='submit'] to be present")
50
+ assert all('input[type=submit]').present?, message
47
51
  end
48
52
 
49
53
  def assert_page_status(status = 200, message = '(page_status) Expected :status: HTTP status code')
@@ -65,8 +65,18 @@ module EffectiveTestBotFormHelper
65
65
  page.execute_script "$('input[data-disable-with]').each(function(i) { $.rails.enableFormElement($(this)); });"
66
66
  end
67
67
 
68
- label.present? ? find(:link_or_button, label).click : first(:css, "input[type='submit']").click
68
+ if label.present?
69
+ submit = find(:link_or_button, label)
70
+ assert submit.present?, "TestBotError: Unable to find a visible submit link or button on #{page.current_path} with the label #{label}"
71
+ submit.click
72
+ else
73
+ submit = first(:css, "input[type='submit']")
74
+ assert submit.present?, "TestBotError: Unable to find a visible input[type='submit'] on #{page.current_path}"
75
+ submit.click
76
+ end
77
+
69
78
  synchronize!
79
+ true
70
80
  end
71
81
 
72
82
  def with_raised_unpermitted_params_exceptions(&block)
@@ -73,11 +73,16 @@ module TestBot
73
73
  return false unless CRUD_ACTIONS.include?(route.defaults[:action])
74
74
  return false unless route.defaults[:controller].present? && route.app.respond_to?(:controller)
75
75
 
76
- controller_klass = (route.app.controller(route.defaults) rescue nil)
77
- controller_instance = controller_klass.new()
76
+ begin
77
+ controller_klass = route.app.controller(route.defaults)
78
+ controller_instance = controller_klass.new()
79
+
80
+ # Is this a CRUD capable controller?
81
+ controller_instance.respond_to?(:new) && controller_instance.respond_to?(:create)
82
+ rescue => e
83
+ false
84
+ end
78
85
 
79
- # Is this a CRUD capable controller?
80
- controller_instance && controller_instance.respond_to?(:new) && controller_instance.respond_to?(:create)
81
86
  end
82
87
 
83
88
  end
@@ -31,21 +31,33 @@ module BaseTest
31
31
  EffectiveTestBot.skip?((current_test if defined?(current_test)), assertion)
32
32
  end
33
33
 
34
+ # There are numerous points of failure here, so we want to be very helpful with the error messages
34
35
  def find_or_create_resource!
35
- existing = resource_class.last
36
- (existing.present? && !existing.kind_of?(User)) ? existing : create_resource!
37
- end
36
+ obj = resource_class.last
37
+ return obj if obj.present? && !obj.kind_of?(User)
38
+
39
+ hint = "Unable to find_or_create_resource!\nEither fixture/seed an instance of #{resource_class} or ensure that submitting form#new_#{resource_name} on #{(new_resource_path rescue nil) || 'the resource new page'} creates a new #{resource_name}"
38
40
 
39
- def create_resource!
41
+ # It doesn't exist, so lets go to the new page and submit a form to build one
40
42
  without_screenshots do
43
+ assert((new_resource_path rescue nil), "TestBotError: Generated polymorphic route new_#{[*controller_namespace, resource_name].compact.join('_')}_path is undefined. #{hint}")
44
+
41
45
  visit(new_resource_path)
42
46
 
47
+ assert_form "form#new_#{resource_name}", "TestBotError: Failed to find form#new_#{resource_name}. #{hint}"
48
+
43
49
  within("form#new_#{resource_name}") do
44
- fill_form(resource_attributes) and submit_novalidate_form
50
+ fill_form(resource_attributes)
51
+
52
+ assert_submit_input "TestBotError: Failed to find a visible input[type='submit'] on #{page.current_path}. #{hint}"
53
+ submit_novalidate_form
45
54
  end
46
55
  end
47
56
 
48
- resource_class.last
57
+ obj = resource_class.last
58
+ assert obj.present?, "TestBotError: Failed to create a resource after submitting form. #{hint}"
59
+
60
+ obj
49
61
  end
50
62
 
51
63
  # Try to find a link_to_delete already on this page
@@ -76,7 +88,7 @@ module BaseTest
76
88
  end
77
89
 
78
90
  def new_resource_path # new
79
- new_polymorphic_path([*controller_namespace, resource])
91
+ path = new_polymorphic_path([*controller_namespace, resource])
80
92
  end
81
93
 
82
94
  def edit_resource_path(resource) # edit
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_test_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.12
4
+ version: 0.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-02 00:00:00.000000000 Z
11
+ date: 2016-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails