magicspec 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.document +5 -0
  3. data/.project +18 -0
  4. data/Gemfile +16 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.md +95 -0
  7. data/README.rdoc +38 -0
  8. data/Rakefile +44 -0
  9. data/bin/magicspec +6 -0
  10. data/lib/magicspec/cli.rb +73 -0
  11. data/lib/magicspec/errors.rb +6 -0
  12. data/lib/magicspec/ext/string.rb +11 -0
  13. data/lib/magicspec/generators/magicspec/.rspec +1 -0
  14. data/lib/magicspec/generators/magicspec/app/matchers/.empty_directory +5 -0
  15. data/lib/magicspec/generators/magicspec/app/pages/yale/yale_page.rb.tt +15 -0
  16. data/lib/magicspec/generators/magicspec/app/pages/yale/yale_search_result_page.rb.tt +9 -0
  17. data/lib/magicspec/generators/magicspec/app/reports/.empty_directory +5 -0
  18. data/lib/magicspec/generators/magicspec/app/reports/screenshots/.empty_directory +0 -0
  19. data/lib/magicspec/generators/magicspec/app/spec/shared/login.rb +11 -0
  20. data/lib/magicspec/generators/magicspec/app/spec/spec_helper.rb.tt +114 -0
  21. data/lib/magicspec/generators/magicspec/app/spec/support/formatters/dry_run_formatter.rb +13 -0
  22. data/lib/magicspec/generators/magicspec/app/spec/support/formatters/html_override.rb +360 -0
  23. data/lib/magicspec/generators/magicspec/app/spec/support/formatters/magicspec_formatter.rb +46 -0
  24. data/lib/magicspec/generators/magicspec/app/spec/support/matchers/custom_matcher.rb +7 -0
  25. data/lib/magicspec/generators/magicspec/app/spec/support/matchers/email_matcher.rb +1 -0
  26. data/lib/magicspec/generators/magicspec/app/spec/support/matchers/file_matcher.rb +12 -0
  27. data/lib/magicspec/generators/magicspec/app/spec/yale/yale_example_spec.rb +34 -0
  28. data/lib/magicspec/generators/magicspec/app/test_data/baidu.yml +4 -0
  29. data/lib/magicspec/generators/magicspec/app/test_data/login_user.yml +4 -0
  30. data/lib/magicspec/generators/magicspec/bin/console +7 -0
  31. data/lib/magicspec/generators/magicspec/bin/console.bat +6 -0
  32. data/lib/magicspec/generators/magicspec/bin/setup.rb.tt +12 -0
  33. data/lib/magicspec/generators/magicspec/config/config.yml +6 -0
  34. data/lib/magicspec/generators/magicspec/config/magicspec_formatter.rb +47 -0
  35. data/lib/magicspec/generators/magicspec/config/override.rb +351 -0
  36. data/lib/magicspec/magicspec_config.rb +21 -0
  37. data/lib/magicspec/magicspec_initializer.rb +33 -0
  38. data/lib/magicspec/page_override.rb +5 -0
  39. data/lib/magicspec/templates/browser_spec_template.rb.tt +22 -0
  40. data/lib/magicspec/templates/mobile_template.rb.tt +15 -0
  41. data/lib/magicspec/templates/plain_template.rb.tt +22 -0
  42. data/lib/magicspec/templates/template_page.rb.tt +11 -0
  43. data/lib/magicspec/templates/web_service_template.rb.tt +18 -0
  44. data/lib/magicspec/watir_browser.rb +7 -0
  45. data/lib/magicspec.rb +8 -0
  46. data/magicspec.gemspec +120 -0
  47. data/spec/app/pages/components/footer.rb +3 -0
  48. data/spec/app/pages/components/sub/sub_footer.rb +3 -0
  49. data/spec/app/pages/module1/module1_page.rb +6 -0
  50. data/spec/app/pages/module1/sub_test_page.rb +4 -0
  51. data/spec/app/pages/test_navigator.rb +4 -0
  52. data/spec/app/pages/test_page.rb +4 -0
  53. data/spec/config/config.yml +3 -0
  54. data/spec/config/wrong_config.yml +5 -0
  55. data/spec/lazy_initializer_spec.rb +28 -0
  56. data/spec/lazy_navigator_spec.rb +36 -0
  57. data/spec/lazy_page_spec.rb +44 -0
  58. data/spec/magicspec_config_spec.rb +28 -0
  59. data/spec/pages/components/footer.rb +2 -0
  60. data/spec/pages/test_page.rb +5 -0
  61. data/spec/spec_helper.rb +20 -0
  62. data/spec/string_spec.rb +10 -0
  63. metadata +206 -0
@@ -0,0 +1,5 @@
1
+ ---
2
+ incorrect
3
+ wrong:
4
+ ok
5
+
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lazyman::Initializer do
4
+ before do
5
+ @app_name = 'test'
6
+ Lazyman::Initializer.new File.dirname(__FILE__), @app_name
7
+ end
8
+
9
+ it 'should load app page and navigator' do
10
+ lambda {TestPage}.should_not raise_error
11
+ lambda {TestNavigator}.should_not raise_error
12
+ end
13
+
14
+ it 'should load all components' do
15
+ lambda {Footer}.should_not raise_error
16
+ lambda {SubFooter}.should_not raise_error
17
+ end
18
+
19
+ it 'should load all pages' do
20
+ lambda {Module1Page}.should_not raise_error
21
+ lambda {CustomModule1Page}.should_not raise_error
22
+ end
23
+
24
+ it 'should load config' do
25
+ $config.host.should eq('www.example.com')
26
+ end
27
+
28
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require 'ostruct'
3
+ require 'pages/test_page'
4
+
5
+ describe Lazyman::Navigator do
6
+ before do
7
+ @config = OpenStruct.new( browser: 'chrome')
8
+ end
9
+
10
+ it 'should raise error when config file does not define browser attribute' do
11
+ lambda {Lazyman::Navigator.new(Object.new)}.should raise_error(Lazyman::IncorrectConfigFileError)
12
+ end
13
+
14
+ it 'should start browser successfully' do
15
+ Watir::Browser.stub(:new).and_return('browser')
16
+ Watir::Browser.should_receive(:new)
17
+ Lazyman::Navigator.new(@config)
18
+ end
19
+
20
+ it "should be lazyman page" do
21
+ Watir::Browser.stub(:new).and_return('browser')
22
+ Watir::Browser.should_receive(:new)
23
+ navi = Lazyman::Navigator.new(@config)
24
+ navi.lazyman_page?(:CustomTestPage).should be_true
25
+ navi.lazyman_page?(:TestPage).should be_true
26
+ end
27
+
28
+ it 'should define goto methods for navigator' do
29
+ Watir::Browser.stub(:new).and_return('browser')
30
+ Watir::Browser.should_receive(:new)
31
+ navi = Lazyman::Navigator.new(@config)
32
+ navi.should respond_to(:goto_test_page)
33
+ navi.should respond_to(:goto_custom_test_page)
34
+ end
35
+
36
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lazyman::Page do
4
+ before :all do
5
+ @app_name = 'test'
6
+ Lazyman::Initializer.new File.dirname(__FILE__), @app_name
7
+ end
8
+
9
+ before(:each) do
10
+ @browser = mock_watir_browser
11
+ end
12
+
13
+ def mock_watir_browser
14
+ watir_browser = double('watir')
15
+ watir_browser.stub!(:is_a?).with(anything()).and_return(false)
16
+ watir_browser.stub!(:is_a?).with(Watir::Browser).and_return(true)
17
+ watir_browser
18
+ end
19
+
20
+ it 'method missing' do
21
+ @browser.stub :close
22
+ @browser.should_receive :close
23
+ Lazyman::Page.new(@browser).close
24
+ end
25
+
26
+ it 'should turn to page' do
27
+ p = Lazyman::Page.new(@browser).turn_to TestPage
28
+ p.is_a?(TestPage).should be_true
29
+ end
30
+
31
+ it 'should data driven with hash' do
32
+ btn = double();
33
+ hash = {:one => 'click', :two => 'ok'}
34
+
35
+ p = TestPage.new(@browser)
36
+ p.stub(:one).and_return(btn)
37
+ p.stub(:two=)
38
+ btn.should_receive(:click)
39
+ p.should_receive(:one)
40
+ p.should_receive(:two=).with('ok')
41
+ p.data_driven(hash)
42
+ end
43
+
44
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lazyman::Config do
4
+ before do
5
+ @valid_file = config_file('config.yml')
6
+ @wrong_format = config_file('wrong_config.yml')
7
+ @content = {host: 'www.example.com'}
8
+ end
9
+
10
+ it 'should raise error when initialized with a missing file' do
11
+ lambda {Lazyman::Config.new('not_exist_file')}.should raise_error(Lazyman::ConfigFileMissingError)
12
+ end
13
+
14
+ it 'should NOT raise error when initialized with an exist file' do
15
+ lambda {Lazyman::Config.new(@valid_file)}.should_not raise_error(Lazyman::ConfigFileMissingError)
16
+ end
17
+
18
+ it 'should load yaml file correctly' do
19
+ Lazyman::Config.new(@valid_file).hash_content['host'].should eql('www.example.com')
20
+ end
21
+
22
+ it 'should init an OpenStruct object correctly' do
23
+ c = Lazyman::Config.new(@valid_file).content
24
+ c.host.should eql('www.example.com')
25
+ c.is_a?(OpenStruct).should be_true
26
+ end
27
+
28
+ end
@@ -0,0 +1,2 @@
1
+ module Footer
2
+ end
@@ -0,0 +1,5 @@
1
+ class TestPage < Lazyman::Page
2
+ end
3
+
4
+ class CustomTestPage < Lazyman::Page
5
+ end
@@ -0,0 +1,20 @@
1
+ require 'bundler'
2
+ require 'pp'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'lazyman'
11
+ require 'rspec'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+
16
+ def config_file(name)
17
+ File.join(File.dirname(__FILE__), 'config', name)
18
+ end
19
+
20
+
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe String do
4
+
5
+ it 'lazy_to_hash should have correct behavor' do
6
+ str = 'a, b, c, d'
7
+ str.lazy_to_hash.should eq({a: true, b: true, c: true, d: true})
8
+ end
9
+
10
+ end
metadata ADDED
@@ -0,0 +1,206 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: magicspec
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - easonhan,dmfranko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: page-object
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
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: rdoc
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: jeweler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: page-object
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: thor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: A test framework using watir-webdriver rspec and page-object
112
+ email: dan.franko@yale.edu
113
+ executables:
114
+ - magicspec
115
+ extensions: []
116
+ extra_rdoc_files:
117
+ - LICENSE.txt
118
+ - README.md
119
+ - README.rdoc
120
+ files:
121
+ - ".document"
122
+ - ".project"
123
+ - Gemfile
124
+ - LICENSE.txt
125
+ - README.md
126
+ - README.rdoc
127
+ - Rakefile
128
+ - bin/magicspec
129
+ - magicspec.gemspec
130
+ - lib/magicspec.rb
131
+ - lib/magicspec/cli.rb
132
+ - lib/magicspec/errors.rb
133
+ - lib/magicspec/ext/string.rb
134
+ - lib/magicspec/generators/magicspec/.rspec
135
+ - lib/magicspec/generators/magicspec/app/matchers/.empty_directory
136
+ - lib/magicspec/generators/magicspec/app/pages/yale/yale_page.rb.tt
137
+ - lib/magicspec/generators/magicspec/app/pages/yale/yale_search_result_page.rb.tt
138
+ - lib/magicspec/generators/magicspec/app/reports/.empty_directory
139
+ - lib/magicspec/generators/magicspec/app/reports/screenshots/.empty_directory
140
+ - lib/magicspec/generators/magicspec/app/spec/shared/login.rb
141
+ - lib/magicspec/generators/magicspec/app/spec/spec_helper.rb.tt
142
+ - lib/magicspec/generators/magicspec/app/spec/support/formatters/dry_run_formatter.rb
143
+ - lib/magicspec/generators/magicspec/app/spec/support/formatters/html_override.rb
144
+ - lib/magicspec/generators/magicspec/app/spec/support/formatters/magicspec_formatter.rb
145
+ - lib/magicspec/generators/magicspec/app/spec/support/matchers/custom_matcher.rb
146
+ - lib/magicspec/generators/magicspec/app/spec/support/matchers/email_matcher.rb
147
+ - lib/magicspec/generators/magicspec/app/spec/support/matchers/file_matcher.rb
148
+ - lib/magicspec/generators/magicspec/app/spec/yale/yale_example_spec.rb
149
+ - lib/magicspec/generators/magicspec/app/test_data/baidu.yml
150
+ - lib/magicspec/generators/magicspec/app/test_data/login_user.yml
151
+ - lib/magicspec/generators/magicspec/bin/console
152
+ - lib/magicspec/generators/magicspec/bin/console.bat
153
+ - lib/magicspec/generators/magicspec/bin/setup.rb.tt
154
+ - lib/magicspec/generators/magicspec/config/config.yml
155
+ - lib/magicspec/generators/magicspec/config/magicspec_formatter.rb
156
+ - lib/magicspec/generators/magicspec/config/override.rb
157
+ - lib/magicspec/magicspec_config.rb
158
+ - lib/magicspec/magicspec_initializer.rb
159
+ - lib/magicspec/page_override.rb
160
+ - lib/magicspec/watir_browser.rb
161
+ - lib/magicspec/templates/browser_spec_template.rb.tt
162
+ - lib/magicspec/templates/mobile_template.rb.tt
163
+ - lib/magicspec/templates/plain_template.rb.tt
164
+ - lib/magicspec/templates/template_page.rb.tt
165
+ - lib/magicspec/templates/web_service_template.rb.tt
166
+ - spec/app/pages/components/footer.rb
167
+ - spec/app/pages/components/sub/sub_footer.rb
168
+ - spec/app/pages/module1/module1_page.rb
169
+ - spec/app/pages/module1/sub_test_page.rb
170
+ - spec/app/pages/test_navigator.rb
171
+ - spec/app/pages/test_page.rb
172
+ - spec/config/config.yml
173
+ - spec/config/wrong_config.yml
174
+ - spec/magicspec_config_spec.rb
175
+ - spec/lazy_initializer_spec.rb
176
+ - spec/lazy_navigator_spec.rb
177
+ - spec/lazy_page_spec.rb
178
+ - spec/pages/components/footer.rb
179
+ - spec/pages/test_page.rb
180
+ - spec/spec_helper.rb
181
+ - spec/string_spec.rb
182
+ homepage: https://github.com/dmfranko/magic_spec
183
+ licenses:
184
+ - MIT
185
+ metadata: {}
186
+ post_install_message:
187
+ rdoc_options: []
188
+ require_paths:
189
+ - lib
190
+ required_ruby_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ requirements: []
201
+ rubyforge_project:
202
+ rubygems_version: 2.0.14
203
+ signing_key:
204
+ specification_version: 4
205
+ summary: A simple web automation test framework
206
+ test_files: []