adaptation 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -7,8 +7,16 @@
7
7
  * 0.0.6
8
8
  - forced to use ROXML version 1.2
9
9
  * 0.0.7
10
- - Documentation update + Message class clean up
10
+ - documentation update + Message class clean up
11
11
  * 0.0.8
12
- - Activerecord 2.2.2 broke our tests, because it has some new methods not present in Adaptation::Message class.
13
- Three class methods have been added in Validateable module to fix that.
14
- - Removed comment when starting console.
12
+ - activerecord 2.2.2 broke our tests, because it has some new methods not present in Adaptation::Message class.
13
+ Three class methods have been added in Validateable module to fix that
14
+ - removed comment when starting console
15
+ * 0.0.9
16
+ - publish method in Adaptor class uses oappublish command configured in settings.yml
17
+ - added method get_message_from_fixture in tests
18
+ - in tests, the 'message' method gets from the message itself the adaptor that must
19
+ process it, not from the test class (so def setup @adaptor=... end; is no longer mandatory)
20
+ - in tests, the 'load_message_from_fixture' method gets from the fixture itself the message class
21
+ to load, not from the test class
22
+ - fixed publish and assert_message_published methods for testing
data/helpers/test.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+
3
+ #require all unit tests
4
+ Dir["test/unit/*.rb"].each do |f|
5
+ require f
6
+ end
7
+
8
+ #require all functional tests
9
+ Dir["test/functional/*.rb"].each do |f|
10
+ require f
11
+ end
@@ -9,6 +9,10 @@ module Adaptation
9
9
  # script/generate adaptor hello
10
10
  #
11
11
  class Adaptor
12
+
13
+ def logger
14
+ Adaptation::Base.logger
15
+ end
12
16
 
13
17
  def publish *options
14
18
  message_object = nil
@@ -22,7 +26,7 @@ module Adaptation
22
26
  end
23
27
 
24
28
  xml = message_object.to_xml
25
- unless system("oappublish '#{$config["application"]}' '#{xml}'")
29
+ unless system("#{$config["oappublish"]} '#{$config["application"]}' '#{xml}'")
26
30
  puts "Problem publishing: #{xml}"
27
31
  end
28
32
  end
@@ -1,10 +1,16 @@
1
1
  module Adaptation
2
2
 
3
- class Base
3
+ class Initializer
4
+
5
+ def self.run
6
+
7
+ unless defined? $environment
8
+ $environment = "development"
9
+ end
4
10
 
5
- def initialize
6
- $environment = "development"
7
- $config = YAML::load(File.open("#{ADAPTOR_ROOT}/config/settings.yml"))[$environment]
11
+ if File.exists?("config/settings.yml")
12
+ $config = YAML::load(File.open("#{ADAPTOR_ROOT}/config/settings.yml"))[$environment]
13
+ end
8
14
 
9
15
  # require all adaptors
10
16
  Dir["#{ADAPTOR_ROOT}/app/adaptors/*.rb"].each do |f|
@@ -21,15 +27,37 @@ module Adaptation
21
27
  require f
22
28
  end
23
29
 
30
+ end
31
+
32
+ end
33
+
34
+
35
+ class Base
36
+
37
+ attr_reader :logger
38
+
39
+ def initialize
40
+
41
+ Initializer.run
42
+
24
43
  # connect with database -> this could also be avoided?
25
44
  if File.exists?("#{ADAPTOR_ROOT}/config/database.yml")
26
- development_configurations = YAML::load(File.open("#{ADAPTOR_ROOT}/config/database.yml"))[$environment]
27
- ActiveRecord::Base.configurations.update("development" => development_configurations)
45
+ environment_configurations = YAML::load(File.open("#{ADAPTOR_ROOT}/config/database.yml"))[$environment]
46
+ ActiveRecord::Base.configurations.update($environment => environment_configurations)
28
47
  ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[$environment])
29
48
  end
49
+
50
+ @@logger = Logger.new("#{ADAPTOR_ROOT}/log/#{$environment}.log")
51
+ ActiveRecord::Base.logger = @@logger
52
+
53
+ end
54
+
55
+ def self.logger
56
+ @@logger
30
57
  end
31
58
 
32
59
  def process(xml_message)
60
+
33
61
  # dirty method to discover the message type
34
62
  message_type = xml_message[1..(xml_message.index(/(>| |\/)/) - 1)]
35
63
 
@@ -48,21 +76,11 @@ module Adaptation
48
76
  puts "WARNING:Message doesn't validate!"
49
77
  return
50
78
  end
51
-
79
+
52
80
  adaptor.process message
53
81
  end
54
82
 
55
83
  def get_class_object(searched_class)
56
- #class_object = nil
57
- #ObjectSpace.each_object(Class){|aClass|
58
- # class_object = aClass if aClass.to_s == searched_class
59
- #}
60
- #if class_object.nil?
61
- # #puts "Unknown class #{searched_class}."
62
- # raise Exception.new("Unknown class #{searched_class}.")
63
- #else
64
- # return class_object
65
- #end
66
84
  Object.const_get searched_class
67
85
  end
68
86
 
@@ -101,7 +101,9 @@ module Adaptation
101
101
  #
102
102
  #
103
103
  class Message
104
-
104
+
105
+ attr_reader :id # avoid id method deprecation warnings
106
+
105
107
  @@classes_with_brothers = []
106
108
  cattr_reader :classes_with_brothers
107
109
  cattr_reader :objects
@@ -1,37 +1,13 @@
1
1
  #set environment
2
2
  $environment = "test"
3
- if File.exists?("config/settings.yml")
4
- $config = YAML::load(File.open("config/settings.yml"))[$environment]
5
- end
3
+
4
+ Adaptation::Initializer.run
6
5
 
7
6
  # for adaptations that require models from a rails application, sometimes
8
7
  # rails needs to load the environment.rb from the rails app. When this happens
9
8
  # the following variable must be set.
10
9
  ENV['RAILS_ENV'] = "test"
11
10
 
12
- # connect to test database
13
- require 'active_record'
14
-
15
- if File.exists?("config/database.yml")
16
- test_configurations = YAML::load(File.open("config/database.yml"))[$environment]
17
- ActiveRecord::Base.configurations.update("test" => test_configurations)
18
- ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[$environment])
19
- end
20
-
21
- if File.exists?("log")
22
- ActiveRecord::Base.logger = Logger.new("#{ADAPTOR_ROOT}/log/test.log")
23
- end
24
-
25
- # load messages
26
- Dir["#{ADAPTOR_ROOT}/app/messages/*.rb"].reject{|f| f =~ /\/_/}.each do |f|
27
- require f
28
- end
29
-
30
- # load models
31
- Dir["#{ADAPTOR_ROOT}/app/models/*.rb"].each do |f|
32
- require f
33
- end
34
-
35
11
  if File.exists?("config/database.yml")
36
12
  begin
37
13
  require 'active_record/fixtures'
@@ -60,7 +36,6 @@ class Test::Unit::TestCase
60
36
  parsed_data.to_s,
61
37
  message_object.to_xml.to_s
62
38
  assert_block error do
63
- #message_object.to_xml.to_s == parsed_data.to_s
64
39
  compare_xml_elements parsed_data.root, message_object.to_xml
65
40
  end
66
41
  end
@@ -82,7 +57,6 @@ class Test::Unit::TestCase
82
57
  parsed_data.to_s,
83
58
  message_object.to_xml.to_s
84
59
  assert_block error do
85
- #message_object.to_xml.to_s != parsed_data.to_s
86
60
  !compare_xml_elements parsed_data.root, message_object.to_xml
87
61
  end
88
62
  end
@@ -116,28 +90,41 @@ class Test::Unit::TestCase
116
90
 
117
91
  # Asserts that a message[link:/classes/Adaptation/Message.html] has been
118
92
  # published in test environment. This means that the
119
- # message[link:/classes/Adaptation/Message.html] will be searched where
120
- # the mock object <em>test/mocks/test/publish.rb</em> left it.
93
+ # message[link:/classes/Adaptation/Message.html] will be searched in the
94
+ # file where the mock object <em>test/mocks/test/publish.rb</em> left it.
95
+ # The file that fakes the mom is deleted every time <em>message<em> method
96
+ # is called.
121
97
  def assert_message_published xml_message
122
- # build Message object with xml_data
123
- message_type = xml_message[1..(xml_message.index(/(>| )/) - 1)]
124
- message_class = get_class_object(message_type.capitalize)
125
- message_object = message_class.to_object(xml_message)
98
+ message_object = xml_message
99
+
100
+ if message_object.is_a?(String)
101
+ # build Message object with xml_data
102
+ message_type = xml_message[1..(xml_message.index(/(>| )/) - 1)]
103
+ message_class = get_class_object(message_type.capitalize)
104
+ message_object = message_class.to_object(xml_message)
105
+ end
126
106
 
127
107
  # check for all messages "published" in the mom (that's file /tmp/mom.txt),
128
108
  # if any line corresponds to the message passed as a parameter.
129
109
  message_found = false
130
- File.open('/tmp/mom.txt', 'r').each{ |line|
110
+ expected = published = ""
111
+ File.open(ADAPTOR_ROOT + '/test/mocks/test/mom.txt', 'r').each{ |line|
131
112
  mom_message = REXML::Document.new line
132
- if mom_message.to_s.chomp == message_object.to_xml.to_s
113
+ published = line.chop
114
+ expected = message_object.to_xml.to_s
115
+ if compare_xml_elements mom_message.root, message_object.to_xml
133
116
  message_found = true
134
117
  break
135
118
  end
136
119
  }
137
120
 
138
- error = build_message error,
139
- "? message not published",
140
- message_type
121
+ error = build_message(error,
122
+ "? message not published:\n \
123
+ Expected : ?\n \
124
+ Published: ?\n",
125
+ message_object.class,
126
+ expected,
127
+ published)
141
128
  assert_block error do
142
129
  message_found
143
130
  end
@@ -165,7 +152,6 @@ class Test::Unit::TestCase
165
152
  begin
166
153
  connection = ActiveRecord::Base.connection
167
154
  rescue Exception => e
168
- puts "Database error message: #{e}"
169
155
  database_exists = false
170
156
  end
171
157
 
@@ -201,7 +187,6 @@ class Test::Unit::TestCase
201
187
  begin
202
188
  connection = ActiveRecord::Base.connection
203
189
  rescue Exception => e
204
- puts "Database says: #{e} (not necessarily bad)"
205
190
  database_exists = false
206
191
  end
207
192
 
@@ -246,14 +231,19 @@ class Test::Unit::TestCase
246
231
  end
247
232
 
248
233
  # clean mom (delete mom.txt file)
249
- mom_mock_file = 'test/mocks/test/mom.txt'
234
+ mom_mock_file = ADAPTOR_ROOT + '/test/mocks/test/mom.txt'
250
235
  if File.exists? mom_mock_file
251
236
  File.delete mom_mock_file
252
237
  end
253
238
 
254
- # process message
255
- @adaptor.process message_object
239
+ Adaptation::Base.new.process message_xml
240
+
241
+ end
256
242
 
243
+ # Retuns a message[link:/classes/Adaptation/Message.html] object
244
+ # from a fixture, without processing it
245
+ def get_message_from_fixture message_symbol
246
+ load_message_fixture(message_symbol)[1]
257
247
  end
258
248
 
259
249
  private
@@ -271,8 +261,7 @@ class Test::Unit::TestCase
271
261
 
272
262
  def load_message_fixture fixture_symbol #:nodoc:
273
263
  data = get_message_fixture(fixture_symbol.to_s)
274
- class_name = self.class.to_s.gsub("Test", "")
275
- class_name = class_name.gsub("Adaptor", "")
264
+ class_name = data[1..(data.index(/(>| )/) - 1)].capitalize
276
265
  message_class = get_class_object(class_name)
277
266
  message_object = message_class.to_object(data)
278
267
  [data, message_object]
@@ -72,6 +72,10 @@ class AppGenerator < Rails::Generator::Base
72
72
  %w(server production development test).each { |file|
73
73
  m.file "configs/empty.log", "log/#{file}.log", :chmod => 0666
74
74
  }
75
+
76
+ # Tests script
77
+ m.file "helpers/test.rb", "test.rb"
78
+
75
79
  end
76
80
  end
77
81
 
@@ -6,7 +6,6 @@ class <%= class_name %>AdaptorTest < Test::Unit::TestCase
6
6
  #fixtures :your_table_name_here
7
7
 
8
8
  def setup
9
- @adaptor = <%= class_name %>Adaptor.new
10
9
  end
11
10
 
12
11
  # Replace this with your real tests.
@@ -195,7 +195,8 @@ module Rails
195
195
 
196
196
  # Yield latest versions of generator gems.
197
197
  def each
198
- Gem::cache.search(/_generator$/).inject({}) { |latest, gem|
198
+ dependency = Gem::Dependency.new(/_generator$/, Gem::Requirement.default)
199
+ Gem::cache.search(dependency).inject({}) { |latest, gem|
199
200
  hem = latest[gem.name]
200
201
  latest[gem.name] = gem if hem.nil? or gem.version > hem.version
201
202
  latest
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adaptation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xavi Vila Morell
8
- autorequire: adaptation
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-12 00:00:00 +01:00
12
+ date: 2008-12-23 00:00:00 +01:00
13
13
  default_executable: adaptation
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,94 +42,95 @@ extensions: []
42
42
  extra_rdoc_files:
43
43
  - README
44
44
  files:
45
- - bin/subscribe
46
- - bin/destroy
47
- - bin/breakpointer
48
- - bin/about
49
- - bin/adaptation
50
45
  - bin/generate
46
+ - bin/about
47
+ - bin/breakpointer
51
48
  - bin/console
49
+ - bin/adaptation
52
50
  - bin/mom
51
+ - bin/subscribe
52
+ - bin/destroy
53
+ - lib/rails_generator
54
+ - lib/ruby_version_check.rb
55
+ - lib/breakpoint_client.rb
56
+ - lib/binding_of_caller.rb
53
57
  - lib/breakpoint.rb
54
- - lib/adaptation
55
- - lib/adaptation/base.rb
56
- - lib/adaptation/console
57
- - lib/adaptation/console/environment.rb
58
- - lib/adaptation/version.rb
59
- - lib/adaptation/mom.rb
60
- - lib/adaptation/message.rb
61
- - lib/adaptation/adaptor.rb
62
- - lib/adaptation/druby_subscriber.rb
63
- - lib/adaptation/test
64
- - lib/adaptation/test/fake_fixtures.rb
65
- - lib/adaptation/test/test_help.rb
66
- - lib/adaptation/validateable.rb
58
+ - lib/rails_generator.rb
67
59
  - lib/commands.rb
68
- - lib/rails_generator
69
- - lib/rails_generator/options.rb
70
- - lib/rails_generator/simple_logger.rb
60
+ - lib/adaptation.rb
61
+ - lib/commands
62
+ - lib/adaptation
63
+ - lib/rails_generator/scripts
64
+ - lib/rails_generator/manifest.rb
71
65
  - lib/rails_generator/base.rb
66
+ - lib/rails_generator/simple_logger.rb
67
+ - lib/rails_generator/generators
72
68
  - lib/rails_generator/commands.rb
73
69
  - lib/rails_generator/lookup.rb
74
- - lib/rails_generator/manifest.rb
75
- - lib/rails_generator/generated_attribute.rb
76
70
  - lib/rails_generator/scripts.rb
77
- - lib/rails_generator/scripts
71
+ - lib/rails_generator/generated_attribute.rb
72
+ - lib/rails_generator/options.rb
73
+ - lib/rails_generator/spec.rb
78
74
  - lib/rails_generator/scripts/update.rb
79
75
  - lib/rails_generator/scripts/destroy.rb
80
76
  - lib/rails_generator/scripts/generate.rb
81
- - lib/rails_generator/spec.rb
82
- - lib/rails_generator/generators
83
- - lib/rails_generator/generators/applications
84
- - lib/rails_generator/generators/applications/app
85
- - lib/rails_generator/generators/applications/app/USAGE
86
- - lib/rails_generator/generators/applications/app/app_generator.rb
87
77
  - lib/rails_generator/generators/components
88
- - lib/rails_generator/generators/components/model
89
- - lib/rails_generator/generators/components/model/USAGE
90
- - lib/rails_generator/generators/components/model/templates
91
- - lib/rails_generator/generators/components/model/templates/unit_test.rb
92
- - lib/rails_generator/generators/components/model/templates/fixtures.yml
93
- - lib/rails_generator/generators/components/model/templates/migration.rb
94
- - lib/rails_generator/generators/components/model/templates/model.rb
95
- - lib/rails_generator/generators/components/model/model_generator.rb
78
+ - lib/rails_generator/generators/applications
96
79
  - lib/rails_generator/generators/components/message
97
- - lib/rails_generator/generators/components/message/USAGE
80
+ - lib/rails_generator/generators/components/adaptor
81
+ - lib/rails_generator/generators/components/model
98
82
  - lib/rails_generator/generators/components/message/templates
99
- - lib/rails_generator/generators/components/message/templates/unit_test.rb
83
+ - lib/rails_generator/generators/components/message/USAGE
84
+ - lib/rails_generator/generators/components/message/message_generator.rb
100
85
  - lib/rails_generator/generators/components/message/templates/message.rb
101
86
  - lib/rails_generator/generators/components/message/templates/fixtures.xml
102
- - lib/rails_generator/generators/components/message/message_generator.rb
103
- - lib/rails_generator/generators/components/adaptor
104
- - lib/rails_generator/generators/components/adaptor/USAGE
87
+ - lib/rails_generator/generators/components/message/templates/unit_test.rb
88
+ - lib/rails_generator/generators/components/adaptor/adaptor_generator.rb
105
89
  - lib/rails_generator/generators/components/adaptor/templates
106
- - lib/rails_generator/generators/components/adaptor/templates/adaptor.rb
90
+ - lib/rails_generator/generators/components/adaptor/USAGE
107
91
  - lib/rails_generator/generators/components/adaptor/templates/functional_test.rb
108
- - lib/rails_generator/generators/components/adaptor/adaptor_generator.rb
109
- - lib/binding_of_caller.rb
110
- - lib/rails_generator.rb
111
- - lib/ruby_version_check.rb
112
- - lib/adaptation.rb
113
- - lib/commands
92
+ - lib/rails_generator/generators/components/adaptor/templates/adaptor.rb
93
+ - lib/rails_generator/generators/components/model/model_generator.rb
94
+ - lib/rails_generator/generators/components/model/templates
95
+ - lib/rails_generator/generators/components/model/USAGE
96
+ - lib/rails_generator/generators/components/model/templates/model.rb
97
+ - lib/rails_generator/generators/components/model/templates/fixtures.yml
98
+ - lib/rails_generator/generators/components/model/templates/unit_test.rb
99
+ - lib/rails_generator/generators/components/model/templates/migration.rb
100
+ - lib/rails_generator/generators/applications/app
101
+ - lib/rails_generator/generators/applications/app/app_generator.rb
102
+ - lib/rails_generator/generators/applications/app/USAGE
103
+ - lib/commands/subscribe.rb
114
104
  - lib/commands/breakpointer.rb
115
- - lib/commands/console.rb
105
+ - lib/commands/destroy.rb
116
106
  - lib/commands/about.rb
117
107
  - lib/commands/adaptor_path.rb
118
- - lib/commands/subscribe.rb
119
- - lib/commands/destroy.rb
120
108
  - lib/commands/generate.rb
121
- - lib/breakpoint_client.rb
122
- - helpers/publish.rb
109
+ - lib/commands/console.rb
110
+ - lib/adaptation/version.rb
111
+ - lib/adaptation/test
112
+ - lib/adaptation/validateable.rb
113
+ - lib/adaptation/base.rb
114
+ - lib/adaptation/message.rb
115
+ - lib/adaptation/druby_subscriber.rb
116
+ - lib/adaptation/console
117
+ - lib/adaptation/mom.rb
118
+ - lib/adaptation/adaptor.rb
119
+ - lib/adaptation/test/fake_fixtures.rb
120
+ - lib/adaptation/test/test_help.rb
121
+ - lib/adaptation/console/environment.rb
123
122
  - helpers/test_helper.rb
123
+ - helpers/publish.rb
124
+ - helpers/test.rb
124
125
  - doc/README_FOR_APP
125
- - configs/databases
126
- - configs/databases/mysql.yml
127
126
  - configs/mom.yml
128
- - configs/settings.yml
129
127
  - configs/empty.log
128
+ - configs/settings.yml
129
+ - configs/databases
130
130
  - configs/boot.rb
131
- - dispatches/dispatch.rb
131
+ - configs/databases/mysql.yml
132
132
  - dispatches/publish.rb
133
+ - dispatches/dispatch.rb
133
134
  - README
134
135
  - CHANGELOG
135
136
  - fresh_rakefile