magnesium 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 (47) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +11 -0
  3. data/Gemfile.lock +52 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/lib/magnesium.rb +62 -0
  8. data/lib/magnesium/config.xml +16 -0
  9. data/lib/magnesium/elements/alert.rb +134 -0
  10. data/lib/magnesium/elements/browser.rb +29 -0
  11. data/lib/magnesium/elements/button.rb +104 -0
  12. data/lib/magnesium/elements/checkbox.rb +103 -0
  13. data/lib/magnesium/elements/div.rb +120 -0
  14. data/lib/magnesium/elements/frame.rb +121 -0
  15. data/lib/magnesium/elements/link.rb +105 -0
  16. data/lib/magnesium/elements/radio.rb +103 -0
  17. data/lib/magnesium/elements/select_list.rb +103 -0
  18. data/lib/magnesium/elements/span.rb +116 -0
  19. data/lib/magnesium/elements/table.rb +121 -0
  20. data/lib/magnesium/elements/text.rb +109 -0
  21. data/lib/magnesium/elements/text_field.rb +109 -0
  22. data/lib/magnesium/extensions/assert.rb +2 -0
  23. data/lib/magnesium/extensions/feedback.rb +25 -0
  24. data/lib/magnesium/extensions/http.rb +48 -0
  25. data/lib/magnesium/extensions/mail.rb +26 -0
  26. data/lib/magnesium/extensions/scheduler.rb +32 -0
  27. data/lib/magnesium/extensions/ssh.rb +53 -0
  28. data/lib/magnesium/extensions/webservice.rb +0 -0
  29. data/lib/magnesium/factor/test_case.rb +124 -0
  30. data/lib/magnesium/factor/test_data.rb +32 -0
  31. data/lib/magnesium/factor/test_result.rb +84 -0
  32. data/lib/magnesium/factor/test_site.rb +23 -0
  33. data/lib/magnesium/factor/test_step.rb +31 -0
  34. data/lib/magnesium/factor/test_ui.rb +55 -0
  35. data/lib/magnesium/support/config.rb +361 -0
  36. data/lib/magnesium/support/container.rb +18 -0
  37. data/lib/magnesium/support/data.rb +11 -0
  38. data/lib/magnesium/support/error.rb +16 -0
  39. data/lib/magnesium/support/factory.rb +43 -0
  40. data/lib/magnesium/support/log.rb +3 -0
  41. data/lib/magnesium/support/testlink.rb +270 -0
  42. data/lib/magnesium/support/xml.rb +73 -0
  43. data/lib/magnesium/version.rb +3 -0
  44. data/magnesium.gemspec +24 -0
  45. data/spec/runspec.rb +0 -0
  46. data/template.yml +57 -0
  47. metadata +134 -0
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ #
4
+ #store web info
5
+ #
6
+ module Magnesium
7
+ class Container
8
+
9
+ attr_accessor :hash_locate
10
+ attr_accessor :hash_action
11
+ attr_accessor :hash_value
12
+ attr_accessor :hash_element
13
+ attr_accessor :container_mark
14
+ attr_accessor :hash_box
15
+ attr_accessor :container_type
16
+ attr_accessor :container_title
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ #
4
+ #store test data info
5
+ #
6
+ module Magnesium
7
+ class TD
8
+ attr_accessor :hash
9
+ attr_accessor :mark
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module Magnesium
2
+ class Show
3
+ def initialize()
4
+ end
5
+
6
+ def self.nonfun
7
+ puts 'M: I need time to grow up.'
8
+ puts 'M: Please try another way.'
9
+ end
10
+
11
+ def self.error
12
+ puts 'M: I am sorry about error.'
13
+ puts 'M: Please try again.'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,43 @@
1
+ require File.expand_path("../../elements/text_field",__FILE__)
2
+ require File.expand_path("../../elements/button",__FILE__)
3
+ require File.expand_path("../../elements/link",__FILE__)
4
+ require File.expand_path("../../elements/select_list",__FILE__)
5
+ require File.expand_path("../../elements/radio",__FILE__)
6
+ require File.expand_path("../../elements/checkbox",__FILE__)
7
+ require File.expand_path("../../elements/alert",__FILE__)
8
+ require File.expand_path("../../elements/frame",__FILE__)
9
+ require File.expand_path("../../elements/span",__FILE__)
10
+ require File.expand_path("../../elements/div",__FILE__)
11
+ require File.expand_path("../../elements/table",__FILE__)
12
+
13
+
14
+ #
15
+ #generate element
16
+ #
17
+ module Magnesium
18
+ class Factory
19
+ def self.creator(element)
20
+ if element == 'textField'
21
+ return TextField.new
22
+ elsif element == 'button'
23
+ return Button.new
24
+ elsif element == 'link'
25
+ return Link.new
26
+ elsif element == 'selectList'
27
+ return SelectList.new
28
+ elsif element == 'radio'
29
+ return Radio.new
30
+ elsif element == 'checkBox'
31
+ return CheckBox.new
32
+ elsif element == 'frame'
33
+ return Frame.new
34
+ elsif element == 'div'
35
+ return Div.new
36
+ elsif element == 'span'
37
+ return Span.new
38
+ elsif element == 'table'
39
+ return Table.new
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ def create_log_file()
2
+
3
+ end
@@ -0,0 +1,270 @@
1
+ # encoding: utf-8
2
+ require 'mysql2'
3
+ #require File.expand_path("../../fun/mysql",__FILE__)
4
+
5
+ module Magnesium
6
+ class TestLink
7
+ def self.query(sql)#connection
8
+ #begin
9
+ @client = Mysql2::Client.new(:host=>Config.config["testlink"]["host"], :username=>Config.config["testlink"]["db_account"], :password=>Config.config["testlink"]["db_pwd"], :database=>Config.config["testlink"]["database"])
10
+
11
+ #return client
12
+ #rescue
13
+ # error
14
+ # puts 'connect'
15
+ #ensure
16
+ #end
17
+ #end
18
+
19
+ #def self.query(sql)
20
+ #begin
21
+ #client = connection
22
+ result = @client.query(sql)
23
+ return result
24
+ #rescue
25
+ # error
26
+ #ensure
27
+ #client.close #if ok
28
+ #end
29
+ end
30
+
31
+ def self.find_tcase(prefix,caseno)
32
+ begin
33
+ result = self.query("select id from testprojects where prefix = '#{prefix}'")
34
+ result.each do |row|
35
+ row.map {|k,v| @tp_id = v if k == "id"}
36
+ end
37
+ #puts @tp_id
38
+
39
+ result = self.query("select tcase_id from tcases_active where tc_external_id = #{caseno}")
40
+
41
+ result.each do |row|
42
+ row.map do |k,v|
43
+ @tc_id = v if self.find_root(v)==@tp_id
44
+ end
45
+ end
46
+ return @tc_id
47
+ #rescue
48
+ #Show.error
49
+ #ensure
50
+ end
51
+ end
52
+
53
+ def self.find_path(prefix,caseno)
54
+ begin
55
+ @tc_id = self.find_tcase(prefix,caseno)
56
+ puts @tc_id
57
+ result = self.query("select file_path from attachments where fk_id = #{@tc_id}")
58
+ result.each do |row|
59
+ row.map {|k,v| return v}
60
+ end
61
+ #rescue
62
+ #Show.error
63
+ #puts 'findpath'
64
+ #ensure
65
+ end
66
+ end
67
+
68
+ def self.find_root(id)
69
+ begin
70
+ result = self.query("select parent_id,id from nodes_hierarchy where id = #{id}")
71
+ result.each do |row|
72
+ row.map do |k,v|
73
+ @parent_id = v if k == "parent_id"
74
+ @id =v if k == "id"
75
+ end
76
+ end
77
+ unless @parent_id.nil?
78
+ self.find_root(@parent_id)
79
+ else
80
+ return @id
81
+ end
82
+ #rescue
83
+ #Show.error
84
+ #ensure
85
+ end
86
+ end
87
+
88
+
89
+ def self.find_version(id)
90
+ begin
91
+ result = self.query("select id from nodes_hierarchy where parent_id = #{id} and node_type_id = 4")
92
+ result.each do |row|
93
+ row.map {|k,v| return v if k == "id"}
94
+ end
95
+ #rescue
96
+ #Show.error
97
+ #ensure
98
+ end
99
+ end
100
+
101
+
102
+ def self.find_step_action(id)
103
+ begin
104
+ result = self.query("select actions from tcsteps where id in (select id from nodes_hierarchy where parent_id = #{id} and node_type_id = 9) order by step_number")
105
+ #puts result
106
+ return result
107
+ #rescue
108
+ #Show.error
109
+ #ensure
110
+ end
111
+ end
112
+
113
+ def self.find_max_step_number(id)
114
+ begin
115
+ result = self.query("select max(step_number) from tcsteps where id in (select id from nodes_hierarchy where parent_id = #{id} and node_type_id =9)")
116
+ return result
117
+ #rescue
118
+ #Show.error
119
+ end
120
+ end
121
+
122
+ def self.find_step_result(id)
123
+ begin
124
+ self.find_max_step_number(id).each do |row|
125
+ row.map do |k,v|
126
+ result = self.query("select expected_results from tcsteps where id in (select id from nodes_hierarchy where parent_id = #{id} and node_type_id = 9) and step_number = #{v}")
127
+ #puts result
128
+ return result
129
+ #puts v
130
+ end
131
+ end
132
+ #rescue
133
+ #Show.error
134
+ #ensure
135
+ end
136
+ end
137
+
138
+
139
+ def self.find_testplan(prefix)
140
+ begin
141
+ result = self.query("select id from testplans where testproject_id in (select id from testprojects where prefix = '#{prefix}')")
142
+ result.each do |row|
143
+ row.map {|k,v| return v if k == "id"}
144
+ end
145
+ #rescue
146
+ #Show.error
147
+ #ensure
148
+ end
149
+ end
150
+
151
+ def self.find_tester(login)
152
+ begin
153
+ result = self.query("select id from users where login = '#{login}'")
154
+ result.each do |row|
155
+ row.map {|k,v| return v if k == "id"}
156
+ end
157
+ #rescue
158
+ #Show.error
159
+ #ensure
160
+ end
161
+ end
162
+
163
+ def self.find_build(prefix)
164
+ begin
165
+ @testplan_id = self.find_testplan(prefix)
166
+ result = self.query("select id from builds where testplan_id in (#{@testplan_id})")
167
+ result.each do |row|
168
+ row.map{|k,v| return v if k == "id"}
169
+ end
170
+ #rescue
171
+ #Show.error
172
+ #ensure
173
+ end
174
+ end
175
+
176
+ def self.find_tcversion_id(caseno)
177
+ begin
178
+ result = self.query("select id from tcversions where tc_external_id = #{caseno}")
179
+ result.each do |row|
180
+ row.map {|k,v| return v if k == "id"}
181
+ end
182
+ #rescue
183
+ #Show.error
184
+ #ensure
185
+ end
186
+ end
187
+
188
+ def self.find_tcversion_number(caseno)
189
+ begin
190
+ result = self.query("select version from tcversions where tc_external_id = #{caseno}")
191
+ result.each do |row|
192
+ row.map {|k,v| return v if k == "version"}
193
+ end
194
+ #rescue
195
+ #Show.error
196
+ #ensure
197
+ end
198
+ end
199
+
200
+ def self.find_max_id(table)
201
+ begin
202
+ result = self.query("select max(id) from #{table}")
203
+ result.each do |row|
204
+ row.map {|k,v| return v}
205
+ end
206
+ #rescue
207
+ #Show.error
208
+ #ensure
209
+ end
210
+ end
211
+
212
+ def self.find_platform_id()
213
+ return 0
214
+ end
215
+
216
+ def self.find_execution_type()
217
+ #1:manul, 2:auto
218
+ return 2
219
+ end
220
+
221
+ def self.set_result(prefix,caseno,login,status,notes)
222
+ begin
223
+ @id = self.find_max_id("executions").to_i+1
224
+ @build_id = self.find_build(prefix)
225
+ @tester_id = self.find_tester(login)
226
+ @testplan_id = self.find_testplan(prefix)
227
+ @tcversion_id = self.find_tcversion_id(caseno)
228
+ @tcversion_number = self.find_tcversion_number(caseno)
229
+ @platform_id = self.find_platform_id
230
+ @execution_type = self.find_execution_type
231
+ execute = self.query("insert into executions values(#{@id},#{@build_id},#{@tester_id},now(),'#{status}',#{@testplan_id},#{@tcversion_id},#{@tcversion_number},#{@platform_id},#{@execution_type},'#{notes}')")
232
+ #rescue
233
+ #Show.error
234
+ #ensure
235
+ end
236
+ end
237
+ end
238
+ end
239
+ =begin
240
+ def set_result(prefix,caseno,login,status,notes)
241
+ begin
242
+ @id = find_max_id("executions").to_i+1
243
+ @build_id = find_build(prefix)
244
+ @tester_id = find_tester(login)
245
+ @testplan_id = find_testplan(prefix)
246
+ @tcversion_id = find_tcversion_id(caseno)
247
+ @tcversion_number = find_tcversion_number(caseno)
248
+ @platform_id = find_platform_id
249
+ @execution_type = find_execution_type
250
+ execute = query("insert into executions values(#{@id},#{@build_id},#{@teste\
251
+ r_id},now(),'#{status}',#{@testplan_id},#{@tcversion_id},#{@tcversion_number},#\
252
+ {@platform_id},#{@execution_type},'#{notes}')")
253
+ rescue
254
+ error
255
+ #ensure
256
+ end
257
+ end
258
+
259
+ =end
260
+
261
+ =begin
262
+ puts 'run'
263
+ find_step(57).each do |row|
264
+ row.map do |k,v|
265
+ puts v
266
+ end
267
+ end
268
+ =end
269
+
270
+ #find_step_result(58)
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rexml/document'
4
+ include REXML
5
+
6
+
7
+ module Magnesium
8
+ class XML
9
+ def self.openXML(path)
10
+ begin
11
+ file = File.read(path)
12
+ return file
13
+ rescue
14
+ error
15
+ #ensure
16
+ end
17
+ end
18
+
19
+ def self.new_document(file)
20
+ begin
21
+ doc = Document.new file
22
+ return doc
23
+ rescue
24
+ error
25
+ #ensure
26
+ end
27
+ end
28
+
29
+ def self.closeXML(file)
30
+ begin
31
+ file.close
32
+ rescue
33
+ error
34
+ #ensure
35
+ end
36
+ end
37
+
38
+ def self.modify_attribute(filepath,path,attribute,value)
39
+ begin
40
+ file = File.read(filepath)
41
+ doc = Document.new file
42
+
43
+ doc.elements.each(path) do |e|
44
+ e.add_attribute(attribute,value)
45
+ end
46
+ File.delete(filepath)
47
+ f = File.new(filepath,'w+')
48
+ puts 'M: Let\'s review the config file.'
49
+ puts '............................................................'
50
+ f.puts doc.write
51
+ rescue
52
+ error
53
+ #ensure
54
+ end
55
+ end
56
+ end
57
+ end
58
+ =begin
59
+ def attribute(doc,xpath,value)
60
+ begin
61
+ doc.elements.each(xpath) do |e|
62
+ unless value.nil?
63
+ return e.attributes[value.to_s]
64
+ else
65
+ return e
66
+ end
67
+ end
68
+ rescue
69
+ error
70
+ #ensure
71
+ end
72
+ end
73
+ =end
@@ -0,0 +1,3 @@
1
+ module Magnesium
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'magnesium/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "magnesium"
8
+ spec.version = Magnesium::VERSION
9
+ spec.authors = ["Meichen Zhou"]
10
+ spec.email = ["meichen.chow@gmail.com"]
11
+ spec.description = %q{A web test automation platform, which integrates with watir-webdriver, TestLink and Mantis}
12
+ spec.summary = %q{A web test automation platform, which integrates with watir-webdriver, TestLink and Mantis}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ end