kracker 0.0.1

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.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +14 -0
  5. data/Gemfile +16 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +33 -0
  8. data/Rakefile +23 -0
  9. data/app/assets/javascripts/application.js +1 -0
  10. data/app/assets/stylesheets/1236_grid.css +21 -0
  11. data/app/assets/stylesheets/720_grid.css +33 -0
  12. data/app/assets/stylesheets/986_grid.css +24 -0
  13. data/app/assets/stylesheets/kracker.css +134 -0
  14. data/app/assets/stylesheets/normalize.css +425 -0
  15. data/app/controllers/kracker_application_controller.rb +8 -0
  16. data/app/controllers/kracker_controller.rb +114 -0
  17. data/app/views/kracker/about.html.erb +3 -0
  18. data/app/views/kracker/artifacts.html.erb +16 -0
  19. data/app/views/kracker/index.html.erb +12 -0
  20. data/app/views/kracker/new.html.erb +15 -0
  21. data/app/views/kracker/path_config.html.erb +8 -0
  22. data/app/views/kracker/show.html.erb +42 -0
  23. data/app/views/layouts/kracker.html.erb +32 -0
  24. data/app/views/shared/_dom_set.html.erb +35 -0
  25. data/app/views/shared/_kracker_nav.html.erb +8 -0
  26. data/config/routes.rb +17 -0
  27. data/kracker.gemspec +27 -0
  28. data/lib/kracker/analysis.rb +114 -0
  29. data/lib/kracker/element.rb +92 -0
  30. data/lib/kracker/kracker.rb +112 -0
  31. data/lib/kracker/locations.rb +49 -0
  32. data/lib/kracker/rails/engine.rb +7 -0
  33. data/lib/kracker/svg.rb +71 -0
  34. data/lib/kracker/version.rb +3 -0
  35. data/lib/kracker.rb +7 -0
  36. data/test/page_objects/kracker/about_page.rb +7 -0
  37. data/test/page_objects/kracker/artifacts_page.rb +7 -0
  38. data/test/page_objects/kracker/config_page.rb +19 -0
  39. data/test/page_objects/kracker/index_page.rb +9 -0
  40. data/test/page_objects/kracker/local_index_page.rb +7 -0
  41. data/test/page_objects/kracker/new_page.rb +7 -0
  42. data/test/page_objects/kracker/show_page.rb +15 -0
  43. data/test/page_objects/kracker/viewer_page.rb +15 -0
  44. data/test/page_objects/navigation.rb +34 -0
  45. data/test/page_objects.rb +13 -0
  46. data/test/selenium/mapping_test.rb +98 -0
  47. data/test/selenium/viewer_test.rb +25 -0
  48. data/test/selenium_test_helper.rb +102 -0
  49. data/test/test_app/Gemfile +10 -0
  50. data/test/test_app/app/assets/stylesheets/local_app.css +25 -0
  51. data/test/test_app/app/controllers/application_controller.rb +2 -0
  52. data/test/test_app/app/controllers/local_controller.rb +8 -0
  53. data/test/test_app/app/views/layouts/local.html.erb +14 -0
  54. data/test/test_app/app/views/local/index.html.erb +45 -0
  55. data/test/test_app/config/database.yml +13 -0
  56. data/test/test_app/config/initializers/kracker_initializer.rb +5 -0
  57. data/test/test_app/config/routes.rb +4 -0
  58. data/test/test_app/config.ru +31 -0
  59. data/test/test_app/test_app.rb +30 -0
  60. data/test/test_helper.rb +41 -0
  61. data/test/test_helpers/kracker_class_for_stubbing.rb +3 -0
  62. data/test/test_helpers/location_helpers.rb +29 -0
  63. data/test/test_objects/test_objects.rb +30 -0
  64. data/test/unit/analysis_test.rb +87 -0
  65. data/test/unit/element_test.rb +47 -0
  66. data/test/unit/kracker_test.rb +79 -0
  67. data/test/unit/location_test.rb +23 -0
  68. data/watchr_script.rb +3 -0
  69. metadata +199 -0
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ class ElementTest < Kracker::KrackerTestCase
4
+
5
+ def test_sameness
6
+ element1 = DOMElement.new(single_element_hash)
7
+ element2 = DOMElement.new(single_element_hash.merge({"left" => 72}))
8
+
9
+ assert element1.same_element?(element2), 'should be the same element'
10
+ refute element1.all_same?(element2), 'should not be all same'
11
+ assert element1.close_enough?(element2), 'should be the same element, but with slight differences'
12
+
13
+ element1.left = 72
14
+ assert element1.all_same?(element2), 'should be the same now'
15
+
16
+ element2.id = 'stupid_id'
17
+ refute element1.all_same?(element2)
18
+ refute element1.same_element?(element2)
19
+ end
20
+
21
+ def test_similarity
22
+ element1 = DOMElement.new(single_element_hash.merge({"similarity" => 2}))
23
+ element2 = DOMElement.new(single_element_hash.merge({"left" => 72}))
24
+ element3 = DOMElement.new(single_element_hash.merge({"left" => 74}))
25
+
26
+ assert element1.same_element?(element2), 'should be the same element'
27
+ assert element1.same_element?(element3), 'should be the same element'
28
+
29
+ refute element1.all_same?(element2), 'should not be exactly the same'
30
+ refute element1.all_same?(element3), 'should not be exactly the same'
31
+
32
+ assert element1.close_enough?(element2), 'should be close enough'
33
+ refute element1.close_enough?(element3), 'should not be close enough'
34
+
35
+ element1.similarity = 4
36
+ assert element1.close_enough?(element3), 'should not be close enough'
37
+ end
38
+
39
+ def test_changed_element__width
40
+ element1 = DOMElement.new(array_of_elements.last)
41
+ element2 = DOMElement.new(array_of_elements.last.merge("width" => 20))
42
+
43
+ assert element1.same_element?(element2), 'should be same element'
44
+ refute element1.close_enough?(element2), 'elements not close enough'
45
+ end
46
+
47
+ end
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class KrackerTest < Kracker::KrackerTestCase
4
+ def setup
5
+ @test_root = 'elbow'
6
+ prep_locations_for_test
7
+ make_master_test_file(@test_root, array_of_elements_small)
8
+ @kracker_object = KrackerClassForStubbing.new
9
+ end
10
+
11
+ def teardown
12
+ delete_test_locations
13
+ end
14
+
15
+ def test_kracker__missing_master
16
+ this_test_root = 'not_elbow'
17
+ blessing_copy_string = "cp #{Kracker.current_filename(this_test_root)} #{Kracker.master_filename(this_test_root)}"
18
+
19
+ @kracker_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
20
+ mapping_results = @kracker_object.page_map_same?(this_test_root)
21
+
22
+ refute mapping_results[0], 'test should fail because no master'
23
+ assert_match 'Master file does not exist', mapping_results[1], 'failure message when no master'
24
+ assert_match blessing_copy_string, mapping_results[1], 'blessing copy string should be in the error message'
25
+
26
+ `#{blessing_copy_string}`
27
+ @kracker_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
28
+
29
+ mapping_results = @kracker_object.page_map_same?(this_test_root)
30
+ assert mapping_results[0], 'test should now pass with copied master'
31
+
32
+ end
33
+
34
+ def test_kracker__pass
35
+ @kracker_object.stubs(:perform_mapping_operation).returns(array_of_elements_small)
36
+ mapping_results = @kracker_object.page_map_same?(@test_root)
37
+
38
+ assert mapping_results[0], mapping_results[1]
39
+ end
40
+
41
+ def test_kracker__fail_one_new_element
42
+ blessing_copy_string = "cp #{Kracker.current_filename(@test_root)} #{Kracker.master_filename(@test_root)}"
43
+
44
+
45
+ current_data = array_of_elements_small << single_element_hash
46
+ @kracker_object.stubs(:perform_mapping_operation).returns(current_data)
47
+ mapping_results = @kracker_object.page_map_same?(@test_root)
48
+
49
+ refute mapping_results[0], 'page same results should be false'
50
+
51
+ assert_match 'Elements not in master: 1', mapping_results[1], 'error message contents'
52
+ assert_match 'Elements not in current: 0', mapping_results[1], 'error message contents'
53
+ assert_match 'Changed elements: 0', mapping_results[1], 'error message contents'
54
+
55
+ assert_match "current: #{Kracker.current_filename(@test_root)}", mapping_results[1], 'error message contents'
56
+ assert_match "master: #{Kracker.master_filename(@test_root)}", mapping_results[1], 'error message contents'
57
+ assert_match "difference: #{Kracker.diff_filename(@test_root)}", mapping_results[1], 'error message contents'
58
+
59
+ assert_match blessing_copy_string, mapping_results[1], 'blessing copy string should be in the error message'
60
+
61
+ files_in_diff_location = Dir[File.join(Kracker.diff_file_location, '*')]
62
+ assert_equal 4, files_in_diff_location.count, 'the number of files in the diff location after a failure.'
63
+
64
+ `#{blessing_copy_string}`
65
+
66
+ @kracker_object.stubs(:perform_mapping_operation).returns(current_data)
67
+ mapping_results = @kracker_object.page_map_same?(@test_root)
68
+
69
+ assert mapping_results[0], 'should pass now that the blessing copy string has been run'
70
+
71
+ end
72
+
73
+ def make_master_test_file(test_root, data)
74
+ filename = Kracker.master_filename(test_root)
75
+ yaml_data = data.to_yaml
76
+ File.open(filename, 'w') { |file| file.write(yaml_data) }
77
+ end
78
+
79
+ end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class LocationTest < Kracker::KrackerTestCase
4
+
5
+ def setup
6
+ prep_locations_for_test
7
+ end
8
+
9
+ def teardown
10
+ delete_test_locations
11
+ end
12
+
13
+ def test_locations
14
+ assert_equal File.join(@locations_root, 'masters'), Kracker.master_file_location , 'master file location value'
15
+ assert_equal File.join(@locations_root, 'current'), Kracker.current_file_location , 'current file location value'
16
+ assert_equal File.join(@locations_root, 'diff'), Kracker.diff_file_location , 'difference file location value'
17
+
18
+ assert Dir.exist?(Kracker.master_file_location) , 'master file location created'
19
+ assert Dir.exist?(Kracker.current_file_location) , 'current file location created'
20
+ assert Dir.exist?(Kracker.diff_file_location) , 'difference file location created'
21
+ end
22
+
23
+ end
data/watchr_script.rb ADDED
@@ -0,0 +1,3 @@
1
+ watch( './*\.rb' ) do |md|
2
+ system("clear && rake test:units")
3
+ end
metadata ADDED
@@ -0,0 +1,199 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kracker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - geordie
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: kramdown
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: DOM Mapping
70
+ email:
71
+ - george.speake@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .ruby-version
78
+ - .travis.yml
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - app/assets/javascripts/application.js
84
+ - app/assets/stylesheets/1236_grid.css
85
+ - app/assets/stylesheets/720_grid.css
86
+ - app/assets/stylesheets/986_grid.css
87
+ - app/assets/stylesheets/kracker.css
88
+ - app/assets/stylesheets/normalize.css
89
+ - app/controllers/kracker_application_controller.rb
90
+ - app/controllers/kracker_controller.rb
91
+ - app/views/kracker/about.html.erb
92
+ - app/views/kracker/artifacts.html.erb
93
+ - app/views/kracker/index.html.erb
94
+ - app/views/kracker/new.html.erb
95
+ - app/views/kracker/path_config.html.erb
96
+ - app/views/kracker/show.html.erb
97
+ - app/views/layouts/kracker.html.erb
98
+ - app/views/shared/_dom_set.html.erb
99
+ - app/views/shared/_kracker_nav.html.erb
100
+ - config/routes.rb
101
+ - kracker.gemspec
102
+ - lib/kracker.rb
103
+ - lib/kracker/analysis.rb
104
+ - lib/kracker/element.rb
105
+ - lib/kracker/kracker.rb
106
+ - lib/kracker/locations.rb
107
+ - lib/kracker/rails/engine.rb
108
+ - lib/kracker/svg.rb
109
+ - lib/kracker/version.rb
110
+ - test/page_objects.rb
111
+ - test/page_objects/kracker/about_page.rb
112
+ - test/page_objects/kracker/artifacts_page.rb
113
+ - test/page_objects/kracker/config_page.rb
114
+ - test/page_objects/kracker/index_page.rb
115
+ - test/page_objects/kracker/local_index_page.rb
116
+ - test/page_objects/kracker/new_page.rb
117
+ - test/page_objects/kracker/show_page.rb
118
+ - test/page_objects/kracker/viewer_page.rb
119
+ - test/page_objects/navigation.rb
120
+ - test/selenium/mapping_test.rb
121
+ - test/selenium/viewer_test.rb
122
+ - test/selenium_test_helper.rb
123
+ - test/test_app/Gemfile
124
+ - test/test_app/app/assets/stylesheets/local_app.css
125
+ - test/test_app/app/controllers/application_controller.rb
126
+ - test/test_app/app/controllers/local_controller.rb
127
+ - test/test_app/app/views/layouts/local.html.erb
128
+ - test/test_app/app/views/local/index.html.erb
129
+ - test/test_app/config.ru
130
+ - test/test_app/config/database.yml
131
+ - test/test_app/config/initializers/kracker_initializer.rb
132
+ - test/test_app/config/routes.rb
133
+ - test/test_app/test_app.rb
134
+ - test/test_helper.rb
135
+ - test/test_helpers/kracker_class_for_stubbing.rb
136
+ - test/test_helpers/location_helpers.rb
137
+ - test/test_objects/test_objects.rb
138
+ - test/unit/analysis_test.rb
139
+ - test/unit/element_test.rb
140
+ - test/unit/kracker_test.rb
141
+ - test/unit/location_test.rb
142
+ - watchr_script.rb
143
+ homepage: https://github.com/QuantumGeordie/kracker
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.1.11
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Map the page DOM and get some stats on it compared to a known default map.
167
+ test_files:
168
+ - test/page_objects.rb
169
+ - test/page_objects/kracker/about_page.rb
170
+ - test/page_objects/kracker/artifacts_page.rb
171
+ - test/page_objects/kracker/config_page.rb
172
+ - test/page_objects/kracker/index_page.rb
173
+ - test/page_objects/kracker/local_index_page.rb
174
+ - test/page_objects/kracker/new_page.rb
175
+ - test/page_objects/kracker/show_page.rb
176
+ - test/page_objects/kracker/viewer_page.rb
177
+ - test/page_objects/navigation.rb
178
+ - test/selenium/mapping_test.rb
179
+ - test/selenium/viewer_test.rb
180
+ - test/selenium_test_helper.rb
181
+ - test/test_app/Gemfile
182
+ - test/test_app/app/assets/stylesheets/local_app.css
183
+ - test/test_app/app/controllers/application_controller.rb
184
+ - test/test_app/app/controllers/local_controller.rb
185
+ - test/test_app/app/views/layouts/local.html.erb
186
+ - test/test_app/app/views/local/index.html.erb
187
+ - test/test_app/config.ru
188
+ - test/test_app/config/database.yml
189
+ - test/test_app/config/initializers/kracker_initializer.rb
190
+ - test/test_app/config/routes.rb
191
+ - test/test_app/test_app.rb
192
+ - test/test_helper.rb
193
+ - test/test_helpers/kracker_class_for_stubbing.rb
194
+ - test/test_helpers/location_helpers.rb
195
+ - test/test_objects/test_objects.rb
196
+ - test/unit/analysis_test.rb
197
+ - test/unit/element_test.rb
198
+ - test/unit/kracker_test.rb
199
+ - test/unit/location_test.rb