adaptation 0.0.8 → 0.0.9

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.
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