simplexframe 0.0.01

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/.document +5 -0
  2. data/Gemfile +21 -0
  3. data/Gemfile.lock +64 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +94 -0
  6. data/README.rdoc +38 -0
  7. data/Rakefile +1 -0
  8. data/VERSION +1 -0
  9. data/bin/simplexframe +7 -0
  10. data/lib/simplexframe.rb +9 -0
  11. data/lib/simplexframe/cli.rb +38 -0
  12. data/lib/simplexframe/errors.rb +6 -0
  13. data/lib/simplexframe/ext/string.rb +12 -0
  14. data/lib/simplexframe/generators/simplexframe/.rspec +3 -0
  15. data/lib/simplexframe/generators/simplexframe/app/cases/baidu_and_google/baidu_example_spec.rb +24 -0
  16. data/lib/simplexframe/generators/simplexframe/app/cases/baidu_and_google/google_example_spec.rb +16 -0
  17. data/lib/simplexframe/generators/simplexframe/app/cases/mantis/report_issue_spec.rb +27 -0
  18. data/lib/simplexframe/generators/simplexframe/app/cases/shared/login.rb +11 -0
  19. data/lib/simplexframe/generators/simplexframe/app/cases/spec_helper.rb.tt +49 -0
  20. data/lib/simplexframe/generators/simplexframe/app/matchers/.empty_directory +5 -0
  21. data/lib/simplexframe/generators/simplexframe/app/pages/%app_name%_navigator.rb.tt +4 -0
  22. data/lib/simplexframe/generators/simplexframe/app/pages/%app_name%_page.rb.tt +4 -0
  23. data/lib/simplexframe/generators/simplexframe/app/pages/baidu/baidu_page.rb.tt +14 -0
  24. data/lib/simplexframe/generators/simplexframe/app/pages/baidu/search_result_page.rb.tt +4 -0
  25. data/lib/simplexframe/generators/simplexframe/app/pages/components/.empty_directory +5 -0
  26. data/lib/simplexframe/generators/simplexframe/app/pages/components/menu.rb +6 -0
  27. data/lib/simplexframe/generators/simplexframe/app/pages/google/google_page.rb.tt +16 -0
  28. data/lib/simplexframe/generators/simplexframe/app/pages/google/google_search_result_page.rb.tt +4 -0
  29. data/lib/simplexframe/generators/simplexframe/app/pages/mantis/login_page.rb.tt +17 -0
  30. data/lib/simplexframe/generators/simplexframe/app/pages/mantis/my_view_page.rb.tt +8 -0
  31. data/lib/simplexframe/generators/simplexframe/app/pages/mantis/report_issue_page.rb.tt +26 -0
  32. data/lib/simplexframe/generators/simplexframe/app/pages/mantis/view_all_bug_page.rb.tt +22 -0
  33. data/lib/simplexframe/generators/simplexframe/app/reports/.empty_directory +5 -0
  34. data/lib/simplexframe/generators/simplexframe/app/test_data/baidu.yml +4 -0
  35. data/lib/simplexframe/generators/simplexframe/app/test_data/login_user.yml +4 -0
  36. data/lib/simplexframe/generators/simplexframe/bin/console +7 -0
  37. data/lib/simplexframe/generators/simplexframe/bin/console.bat +6 -0
  38. data/lib/simplexframe/generators/simplexframe/bin/setup.rb.tt +12 -0
  39. data/lib/simplexframe/generators/simplexframe/config/config.yml +4 -0
  40. data/lib/simplexframe/generators/simplexframe/config/simplexframe_formatter.rb +24 -0
  41. data/lib/simplexframe/simple_config.rb +21 -0
  42. data/lib/simplexframe/simple_initializer.rb +48 -0
  43. data/lib/simplexframe/simple_navigator.rb +56 -0
  44. data/lib/simplexframe/simple_page.rb +35 -0
  45. data/simplexframe.gemspec +132 -0
  46. data/spec/app/pages/components/footer.rb +3 -0
  47. data/spec/app/pages/components/sub/sub_footer.rb +3 -0
  48. data/spec/app/pages/module1/module1_page.rb +6 -0
  49. data/spec/app/pages/module1/sub_test_page.rb +4 -0
  50. data/spec/app/pages/test_navigator.rb +4 -0
  51. data/spec/app/pages/test_page.rb +4 -0
  52. data/spec/config/config.yml +3 -0
  53. data/spec/config/wrong_config.yml +5 -0
  54. data/spec/pages/components/footer.rb +2 -0
  55. data/spec/pages/test_page.rb +5 -0
  56. data/spec/simple_config_spec.rb +28 -0
  57. data/spec/simple_initializer_spec.rb +28 -0
  58. data/spec/simple_navigator_spec.rb +36 -0
  59. data/spec/simple_page_spec.rb +44 -0
  60. data/spec/spec_helper.rb +20 -0
  61. data/spec/string_spec.rb +10 -0
  62. metadata +278 -0
@@ -0,0 +1,3 @@
1
+ puts 'required files in components' if $debug
2
+ module Footer
3
+ end
@@ -0,0 +1,3 @@
1
+ puts 'required files in sub footer' if $debug
2
+ module SubFooter
3
+ end
@@ -0,0 +1,6 @@
1
+ puts 'required files in module1' if $debug
2
+ class Module1Page < Simplexframe::Page
3
+ end
4
+
5
+ class CustomModule1Page < Simplexframe::Page
6
+ end
@@ -0,0 +1,4 @@
1
+ puts 'required files in sub test page' if $debug
2
+ class SubTestPage < TestPage
3
+ end
4
+
@@ -0,0 +1,4 @@
1
+ puts 'required app navigator' if $debug
2
+ class TestNavigator < Simplexframe::Navigator
3
+ end
4
+
@@ -0,0 +1,4 @@
1
+ puts 'required app pages' if $debug
2
+ class TestPage < Simplexframe::Page
3
+ end
4
+
@@ -0,0 +1,3 @@
1
+ ---
2
+ host: www.example.com
3
+
@@ -0,0 +1,5 @@
1
+ ---
2
+ incorrect
3
+ wrong:
4
+ ok
5
+
@@ -0,0 +1,2 @@
1
+ module Footer
2
+ end
@@ -0,0 +1,5 @@
1
+ class TestPage < Simplexframe::Page
2
+ end
3
+
4
+ class CustomTestPage < Simplexframe::Page
5
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Simplexframe::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 {Simplexframe::Config.new('not_exist_file')}.should raise_error()
12
+ end
13
+
14
+ it 'should NOT raise error when initialized with an exist file' do
15
+ lambda {Simplexframe::Config.new(@valid_file)}.should_not raise_error()
16
+ end
17
+
18
+ it 'should load yaml file correctly' do
19
+ Simplexframe::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 = Simplexframe::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,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Simplexframe::Initializer do
4
+ before do
5
+ @app_name = 'test'
6
+ Simplexframe::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 Simplexframe::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 {Simplexframe::Navigator.new(Object.new)}.should raise_error(Simplexframe::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
+ Simplexframe::Navigator.new(@config)
18
+ end
19
+
20
+ it "should be Simplexframe page" do
21
+ Watir::Browser.stub(:new).and_return('browser')
22
+ Watir::Browser.should_receive(:new)
23
+ navi = Simplexframe::Navigator.new(@config)
24
+ navi.simplexframe_page?(:CustomTestPage).should be_true
25
+ navi.simplexframe_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 = Simplexframe::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 Simplexframe::Page do
4
+ before :all do
5
+ @app_name = 'test'
6
+ Simplexframe::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
+ Simplexframe::Page.new(@browser).close
24
+ end
25
+
26
+ it 'should turn to page' do
27
+ p = Simplexframe::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,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 'simplexframe'
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 'simple_to_hash should have correct behavor' do
6
+ str = 'a, b, c, d'
7
+ str.simple_to_hash.should eq({a: true, b: true, c: true, d: true})
8
+ end
9
+
10
+ end
metadata ADDED
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simplexframe
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.01
10
+ platform: ruby
11
+ authors:
12
+ - thesimplex
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2013-10-01 00:00:00 +03:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 13
30
+ - 0
31
+ version: 2.13.0
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: page-object
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 8
44
+ - 6
45
+ - 1
46
+ version: 0.8.6.1
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: thor
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ - 14
59
+ - 6
60
+ version: 0.14.6
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: active_support
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 3
72
+ - 0
73
+ - 0
74
+ version: 3.0.0
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: rdoc
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 3
86
+ - 12
87
+ version: "3.12"
88
+ type: :development
89
+ version_requirements: *id005
90
+ - !ruby/object:Gem::Dependency
91
+ name: bundler
92
+ prerelease: false
93
+ requirement: &id006 !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ segments:
98
+ - 1
99
+ - 0
100
+ - 0
101
+ version: 1.0.0
102
+ type: :development
103
+ version_requirements: *id006
104
+ - !ruby/object:Gem::Dependency
105
+ name: jeweler
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ segments:
112
+ - 1
113
+ - 8
114
+ - 4
115
+ version: 1.8.4
116
+ type: :development
117
+ version_requirements: *id007
118
+ - !ruby/object:Gem::Dependency
119
+ name: rspec
120
+ prerelease: false
121
+ requirement: &id008 !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ segments:
126
+ - 2
127
+ - 13
128
+ - 0
129
+ version: 2.13.0
130
+ type: :development
131
+ version_requirements: *id008
132
+ - !ruby/object:Gem::Dependency
133
+ name: page-object
134
+ prerelease: false
135
+ requirement: &id009 !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ segments:
140
+ - 0
141
+ - 8
142
+ - 6
143
+ - 1
144
+ version: 0.8.6.1
145
+ type: :development
146
+ version_requirements: *id009
147
+ - !ruby/object:Gem::Dependency
148
+ name: thor
149
+ prerelease: false
150
+ requirement: &id010 !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ segments:
155
+ - 0
156
+ - 14
157
+ - 6
158
+ version: 0.14.6
159
+ type: :development
160
+ version_requirements: *id010
161
+ - !ruby/object:Gem::Dependency
162
+ name: active_support
163
+ prerelease: false
164
+ requirement: &id011 !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ segments:
169
+ - 3
170
+ - 0
171
+ - 0
172
+ version: 3.0.0
173
+ type: :development
174
+ version_requirements: *id011
175
+ description: A test framework using watir-webdriver rspec and page-object
176
+ email: atsimplex@gmail.com
177
+ executables:
178
+ - simplexframe
179
+ extensions: []
180
+
181
+ extra_rdoc_files:
182
+ - LICENSE.txt
183
+ - README.md
184
+ - README.rdoc
185
+ files:
186
+ - .document
187
+ - Gemfile
188
+ - Gemfile.lock
189
+ - LICENSE.txt
190
+ - README.md
191
+ - README.rdoc
192
+ - Rakefile
193
+ - VERSION
194
+ - bin/simplexframe
195
+ - simplexframe.gemspec
196
+ - lib/simplexframe.rb
197
+ - lib/simplexframe/cli.rb
198
+ - lib/simplexframe/errors.rb
199
+ - lib/simplexframe/ext/string.rb
200
+ - lib/simplexframe/generators/simplexframe/.rspec
201
+ - lib/simplexframe/generators/simplexframe/app/cases/baidu_and_google/baidu_example_spec.rb
202
+ - lib/simplexframe/generators/simplexframe/app/cases/baidu_and_google/google_example_spec.rb
203
+ - lib/simplexframe/generators/simplexframe/app/cases/mantis/report_issue_spec.rb
204
+ - lib/simplexframe/generators/simplexframe/app/cases/shared/login.rb
205
+ - lib/simplexframe/generators/simplexframe/app/cases/spec_helper.rb.tt
206
+ - lib/simplexframe/generators/simplexframe/app/matchers/.empty_directory
207
+ - lib/simplexframe/generators/simplexframe/app/pages/%app_name%_navigator.rb.tt
208
+ - lib/simplexframe/generators/simplexframe/app/pages/%app_name%_page.rb.tt
209
+ - lib/simplexframe/generators/simplexframe/app/pages/baidu/baidu_page.rb.tt
210
+ - lib/simplexframe/generators/simplexframe/app/pages/baidu/search_result_page.rb.tt
211
+ - lib/simplexframe/generators/simplexframe/app/pages/components/.empty_directory
212
+ - lib/simplexframe/generators/simplexframe/app/pages/components/menu.rb
213
+ - lib/simplexframe/generators/simplexframe/app/pages/google/google_page.rb.tt
214
+ - lib/simplexframe/generators/simplexframe/app/pages/google/google_search_result_page.rb.tt
215
+ - lib/simplexframe/generators/simplexframe/app/pages/mantis/login_page.rb.tt
216
+ - lib/simplexframe/generators/simplexframe/app/pages/mantis/my_view_page.rb.tt
217
+ - lib/simplexframe/generators/simplexframe/app/pages/mantis/report_issue_page.rb.tt
218
+ - lib/simplexframe/generators/simplexframe/app/pages/mantis/view_all_bug_page.rb.tt
219
+ - lib/simplexframe/generators/simplexframe/app/reports/.empty_directory
220
+ - lib/simplexframe/generators/simplexframe/app/test_data/baidu.yml
221
+ - lib/simplexframe/generators/simplexframe/app/test_data/login_user.yml
222
+ - lib/simplexframe/generators/simplexframe/bin/console
223
+ - lib/simplexframe/generators/simplexframe/bin/console.bat
224
+ - lib/simplexframe/generators/simplexframe/bin/setup.rb.tt
225
+ - lib/simplexframe/generators/simplexframe/config/config.yml
226
+ - lib/simplexframe/generators/simplexframe/config/simplexframe_formatter.rb
227
+ - lib/simplexframe/simple_config.rb
228
+ - lib/simplexframe/simple_initializer.rb
229
+ - lib/simplexframe/simple_navigator.rb
230
+ - lib/simplexframe/simple_page.rb
231
+ - spec/app/pages/components/footer.rb
232
+ - spec/app/pages/components/sub/sub_footer.rb
233
+ - spec/app/pages/module1/module1_page.rb
234
+ - spec/app/pages/module1/sub_test_page.rb
235
+ - spec/app/pages/test_navigator.rb
236
+ - spec/app/pages/test_page.rb
237
+ - spec/config/config.yml
238
+ - spec/config/wrong_config.yml
239
+ - spec/simple_config_spec.rb
240
+ - spec/simple_initializer_spec.rb
241
+ - spec/simple_navigator_spec.rb
242
+ - spec/simple_page_spec.rb
243
+ - spec/pages/components/footer.rb
244
+ - spec/pages/test_page.rb
245
+ - spec/spec_helper.rb
246
+ - spec/string_spec.rb
247
+ has_rdoc: true
248
+ homepage: https://github.com/thesimplex/simplexframe
249
+ licenses:
250
+ - MIT
251
+ post_install_message:
252
+ rdoc_options: []
253
+
254
+ require_paths:
255
+ - lib
256
+ required_ruby_version: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ segments:
261
+ - 0
262
+ version: "0"
263
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ segments:
268
+ - 0
269
+ version: "0"
270
+ requirements: []
271
+
272
+ rubyforge_project:
273
+ rubygems_version: 1.3.6
274
+ signing_key:
275
+ specification_version: 3
276
+ summary: A simple web automation test framework
277
+ test_files: []
278
+