simplexframe 0.0.01

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 (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
+