adaptation 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -38,6 +38,13 @@ end
|
|
38
38
|
|
39
39
|
class Test::Unit::TestCase
|
40
40
|
|
41
|
+
# Asserts that a message[link:/classes/Adaptation/Message.html] in a xml
|
42
|
+
# fixture file is converted into an Adaptation::Message that if serialized
|
43
|
+
# again to xml is equivalent to the xml data in the initial fixture file.
|
44
|
+
# An Adaptation::Message object cretaed from a xml fixture, will only
|
45
|
+
# have the xml tags specified in its class definition (using has_one,
|
46
|
+
# has_many, has_text...) so this assertion can be useful to check that
|
47
|
+
# the class is defined correctly.
|
41
48
|
def assert_parsed message_symbol
|
42
49
|
data, message_object = load_message_fixture message_symbol
|
43
50
|
|
@@ -53,6 +60,13 @@ class Test::Unit::TestCase
|
|
53
60
|
end
|
54
61
|
end
|
55
62
|
|
63
|
+
# Asserts that a message[link:/classes/Adaptation/Message.html] in a xml
|
64
|
+
# fixture file is converted into an Adaptation::Message that if serialized
|
65
|
+
# again to xml is not equivalent to the xml data in the initial fixture file.
|
66
|
+
# An Adaptation::Message object cretaed from a xml fixture, will only
|
67
|
+
# have the xml tags specified in its class definition (using has_one,
|
68
|
+
# has_many, has_text...) so this assertion can be useful to check that
|
69
|
+
# undesired xml tags are filtered.
|
56
70
|
def assert_not_parsed message_symbol
|
57
71
|
data, message_object = load_message_fixture message_symbol
|
58
72
|
|
@@ -63,10 +77,14 @@ class Test::Unit::TestCase
|
|
63
77
|
parsed_data.to_s,
|
64
78
|
message_object.to_xml.to_s
|
65
79
|
assert_block error do
|
66
|
-
message_object.to_xml.to_s != parsed_data.to_s
|
80
|
+
#message_object.to_xml.to_s != parsed_data.to_s
|
81
|
+
!compare_xml_elements parsed_data.root, message_object.to_xml
|
67
82
|
end
|
68
83
|
end
|
69
84
|
|
85
|
+
# Asserts that an Adaptation::Message message[link:/classes/Adaptation/Message.html]
|
86
|
+
# build from a xml fixture file passes all the validations specified in the
|
87
|
+
# class definition.
|
70
88
|
def assert_validates message_symbol
|
71
89
|
data, message_object = load_message_fixture message_symbol
|
72
90
|
error = build_message error,
|
@@ -78,6 +96,9 @@ class Test::Unit::TestCase
|
|
78
96
|
end
|
79
97
|
end
|
80
98
|
|
99
|
+
# Asserts that an Adaptation::Message message[link:/classes/Adaptation/Message.html],
|
100
|
+
# build from a xml fixture file doesn't pass all the validations specified in
|
101
|
+
# the class definition.
|
81
102
|
def assert_not_validates message_symbol
|
82
103
|
data, message_object = load_message_fixture message_symbol
|
83
104
|
error = build_message error,
|
@@ -88,6 +109,10 @@ class Test::Unit::TestCase
|
|
88
109
|
end
|
89
110
|
end
|
90
111
|
|
112
|
+
# Asserts that a message[link:/classes/Adaptation/Message.html] has been
|
113
|
+
# published in test environment. This means that the
|
114
|
+
# message[link:/classes/Adaptation/Message.html] will be searched where
|
115
|
+
# the mock object <em>test/mocks/test/publish.rb</em> left it.
|
91
116
|
def assert_message_published xml_message
|
92
117
|
# build Message object with xml_data
|
93
118
|
message_type = xml_message[1..(xml_message.index(/(>| )/) - 1)]
|
@@ -95,7 +120,7 @@ class Test::Unit::TestCase
|
|
95
120
|
message_object = message_class.to_object(xml_message)
|
96
121
|
|
97
122
|
# check for all messages "published" in the mom (that's file /tmp/mom.txt),
|
98
|
-
# if any line corresponds to the message
|
123
|
+
# if any line corresponds to the message passed as a parameter.
|
99
124
|
message_found = false
|
100
125
|
File.open('/tmp/mom.txt', 'r').each{ |line|
|
101
126
|
mom_message = REXML::Document.new line
|
@@ -114,6 +139,16 @@ class Test::Unit::TestCase
|
|
114
139
|
|
115
140
|
end
|
116
141
|
|
142
|
+
# Asserts a database exists. To do so this method tries to establish a
|
143
|
+
# connection with the specified database. Conection information must
|
144
|
+
# be provided with a hash:
|
145
|
+
# <tt>:database</tt>:: <tt>=> database name</tt>
|
146
|
+
# <tt>:host</tt>:: <tt>=> database host</tt>
|
147
|
+
# <tt>:username</tt>:: <tt>=> database user</tt>
|
148
|
+
# <tt>:password</tt>:: <tt>=> database password</tt>
|
149
|
+
# <tt>:adapter</tt>:: <tt>=> database type (default is "mysql")</tt>
|
150
|
+
# These options correspond to those in
|
151
|
+
# Activerecord::Base.establish_conection[http://ar.rubyonrails.com/classes/ActiveRecord/Base.html#M000370]
|
117
152
|
def assert_database_present db_settings_hash
|
118
153
|
update_activerecord_test_configuration db_settings_hash
|
119
154
|
|
@@ -138,6 +173,18 @@ class Test::Unit::TestCase
|
|
138
173
|
|
139
174
|
end
|
140
175
|
|
176
|
+
# Asserts a database doesn't exist. To do so this method tries to establish a
|
177
|
+
# connection with the specified database. Connection information must
|
178
|
+
# be provided with a hash. This method assert if connection fails, but that
|
179
|
+
# could also mean that provided connection hash is wrong. The connection options
|
180
|
+
# are the same as in assert_database_present:
|
181
|
+
# <tt>:database</tt>:: <tt>=> database name</tt>
|
182
|
+
# <tt>:host</tt>:: <tt>=> database host</tt>
|
183
|
+
# <tt>:username</tt>:: <tt>=> database user</tt>
|
184
|
+
# <tt>:password</tt>:: <tt>=> database password</tt>
|
185
|
+
# <tt>:adapter</tt>:: <tt>=> database type (default is "mysql")</tt>
|
186
|
+
# These options correspond to those in
|
187
|
+
# Activerecord::Base.establish_conection[http://ar.rubyonrails.com/classes/ActiveRecord/Base.html#M000370]
|
141
188
|
def assert_database_not_present db_settings_hash
|
142
189
|
update_activerecord_test_configuration db_settings_hash
|
143
190
|
|
@@ -162,12 +209,6 @@ class Test::Unit::TestCase
|
|
162
209
|
|
163
210
|
end
|
164
211
|
|
165
|
-
def update_activerecord_test_configuration db_settings_hash
|
166
|
-
unless db_settings_hash.nil?
|
167
|
-
ActiveRecord::Base.configurations.update("test" => db_settings_hash)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
212
|
def assert_file_present file
|
172
213
|
error = build_message error,
|
173
214
|
"? not found",
|
@@ -185,8 +226,34 @@ class Test::Unit::TestCase
|
|
185
226
|
!File.exists?(file)
|
186
227
|
end
|
187
228
|
end
|
229
|
+
|
230
|
+
# Builds a message[link:/classes/Adaptation/Message.html] from a xml fixture
|
231
|
+
# file and processes it the same way mesages from the mom are processed by
|
232
|
+
# adaptation, but using a test environment. Published messages will be
|
233
|
+
# published to a mock MOM.
|
234
|
+
def message message_symbol
|
235
|
+
# build a message object from fixture
|
236
|
+
message_xml, message_object = load_message_fixture message_symbol
|
237
|
+
|
238
|
+
# load mock objects
|
239
|
+
Dir["test/mocks/test/*.rb"].each do |f|
|
240
|
+
require f
|
241
|
+
end
|
188
242
|
|
189
|
-
|
243
|
+
# clean mom (delete mom.txt file)
|
244
|
+
mom_mock_file = 'test/mocks/test/mom.txt'
|
245
|
+
if File.exists? mom_mock_file
|
246
|
+
File.delete mom_mock_file
|
247
|
+
end
|
248
|
+
|
249
|
+
# process message
|
250
|
+
@adaptor.process message_object
|
251
|
+
|
252
|
+
end
|
253
|
+
|
254
|
+
private
|
255
|
+
|
256
|
+
def get_message_fixture fixture_name #:nodoc:
|
190
257
|
fixture_file = ADAPTOR_ROOT + '/test/fixtures/' + fixture_name + '.xml'
|
191
258
|
fixture_contents = ""
|
192
259
|
File.open(fixture_file).each { |line|
|
@@ -197,7 +264,7 @@ class Test::Unit::TestCase
|
|
197
264
|
fixture_contents.chomp
|
198
265
|
end
|
199
266
|
|
200
|
-
def load_message_fixture fixture_symbol
|
267
|
+
def load_message_fixture fixture_symbol #:nodoc:
|
201
268
|
data = get_message_fixture(fixture_symbol.to_s)
|
202
269
|
class_name = self.class.to_s.gsub("Test", "")
|
203
270
|
class_name = class_name.gsub("Adaptor", "")
|
@@ -205,8 +272,8 @@ class Test::Unit::TestCase
|
|
205
272
|
message_object = message_class.to_object(data)
|
206
273
|
[data, message_object]
|
207
274
|
end
|
208
|
-
|
209
|
-
def get_class_object(searched_class)
|
275
|
+
|
276
|
+
def get_class_object(searched_class) #:nodoc:
|
210
277
|
class_object = nil
|
211
278
|
ObjectSpace.each_object(Class){|aClass|
|
212
279
|
class_object = aClass if aClass.to_s == searched_class
|
@@ -218,27 +285,7 @@ class Test::Unit::TestCase
|
|
218
285
|
end
|
219
286
|
end
|
220
287
|
|
221
|
-
def
|
222
|
-
# build a message object from fixture
|
223
|
-
message_xml, message_object = load_message_fixture message_symbol
|
224
|
-
|
225
|
-
# load mock objects
|
226
|
-
Dir["test/mocks/test/*.rb"].each do |f|
|
227
|
-
require f
|
228
|
-
end
|
229
|
-
|
230
|
-
# clean mom (delete mom.txt file)
|
231
|
-
mom_mock_file = 'test/mocks/test/mom.txt'
|
232
|
-
if File.exists? mom_mock_file
|
233
|
-
File.delete mom_mock_file
|
234
|
-
end
|
235
|
-
|
236
|
-
# process message
|
237
|
-
@adaptor.process message_object
|
238
|
-
|
239
|
-
end
|
240
|
-
|
241
|
-
def compare_xml_elements element1, element2
|
288
|
+
def compare_xml_elements element1, element2 #:nodoc:
|
242
289
|
if element1.has_attributes?
|
243
290
|
if !elements2.has_attributes?
|
244
291
|
return false
|
@@ -279,4 +326,10 @@ class Test::Unit::TestCase
|
|
279
326
|
return true
|
280
327
|
end
|
281
328
|
|
329
|
+
def update_activerecord_test_configuration db_settings_hash #:nodoc:
|
330
|
+
unless db_settings_hash.nil?
|
331
|
+
ActiveRecord::Base.configurations.update("test" => db_settings_hash)
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
282
335
|
end
|
@@ -6,7 +6,7 @@ class MessageGenerator < Rails::Generator::NamedBase
|
|
6
6
|
m.class_collisions class_path, class_name, "#{class_name}Test"
|
7
7
|
|
8
8
|
# Model, test, and fixture directories.
|
9
|
-
m.directory File.join('app/
|
9
|
+
m.directory File.join('app/messages', class_path)
|
10
10
|
m.directory File.join('test/unit', class_path)
|
11
11
|
m.directory File.join('test/fixtures', class_path)
|
12
12
|
|
metadata
CHANGED