mappum 0.2.0

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 (56) hide show
  1. data/.gitignore +4 -0
  2. data/LICENSE +15 -0
  3. data/README +53 -0
  4. data/Rakefile +48 -0
  5. data/VERSION +1 -0
  6. data/bin/mapserver.rb +4 -0
  7. data/java-api/pom.xml +63 -0
  8. data/java-api/src/main/java/pl/ivmx/mappum/JavaTransform.java +12 -0
  9. data/java-api/src/main/java/pl/ivmx/mappum/MappumApi.java +83 -0
  10. data/java-api/src/main/java/pl/ivmx/mappum/TreeElement.java +23 -0
  11. data/java-api/src/main/java/pl/ivmx/mappum/WorkdirLoader.java +12 -0
  12. data/java-api/src/test/java/iv/Client.java +237 -0
  13. data/java-api/src/test/java/iv/Person.java +261 -0
  14. data/java-api/src/test/java/pl/ivmx/mappum/MappumTest.java +122 -0
  15. data/java-api/src/test/resources/map/example_map.rb +88 -0
  16. data/lib/mappum.rb +46 -0
  17. data/lib/mappum/autoconv_catalogue.rb +43 -0
  18. data/lib/mappum/dsl.rb +255 -0
  19. data/lib/mappum/java_transform.rb +107 -0
  20. data/lib/mappum/map.rb +194 -0
  21. data/lib/mappum/mapserver/mapgraph.rb +192 -0
  22. data/lib/mappum/mapserver/mapserver.rb +213 -0
  23. data/lib/mappum/mapserver/maptable.rb +80 -0
  24. data/lib/mappum/mapserver/views/doc.erb +15 -0
  25. data/lib/mappum/mapserver/views/main.erb +39 -0
  26. data/lib/mappum/mapserver/views/maptable.erb +16 -0
  27. data/lib/mappum/mapserver/views/rubysource.erb +25 -0
  28. data/lib/mappum/mapserver/views/transform-ws.wsdl.erb +50 -0
  29. data/lib/mappum/mapserver/views/ws-error.erb +10 -0
  30. data/lib/mappum/open_xml_object.rb +68 -0
  31. data/lib/mappum/ruby_transform.rb +199 -0
  32. data/lib/mappum/xml_transform.rb +382 -0
  33. data/mappum.gemspec +117 -0
  34. data/sample/address_fixture.xml +11 -0
  35. data/sample/crm.rb +9 -0
  36. data/sample/crm_client.xsd +28 -0
  37. data/sample/erp.rb +7 -0
  38. data/sample/erp_person.xsd +44 -0
  39. data/sample/example_conversions.rb +12 -0
  40. data/sample/example_map.rb +92 -0
  41. data/sample/example_notypes.rb +77 -0
  42. data/sample/example_when.rb +13 -0
  43. data/sample/person_fixture.xml +23 -0
  44. data/sample/person_fixture_any.xml +26 -0
  45. data/sample/server/map/example_any.rb +28 -0
  46. data/sample/server/map/example_soap4r.rb +59 -0
  47. data/sample/server/mapserver.sh +1 -0
  48. data/sample/server/schema/crm_client.xsd +29 -0
  49. data/sample/server/schema/erp/erp_person.xsd +38 -0
  50. data/test/test_conversions.rb +24 -0
  51. data/test/test_example.rb +175 -0
  52. data/test/test_openstruct.rb +129 -0
  53. data/test/test_soap4r.rb +108 -0
  54. data/test/test_when.rb +35 -0
  55. data/test/test_xml_any.rb +62 -0
  56. metadata +164 -0
@@ -0,0 +1 @@
1
+ ruby ../../bin/mapserver.rb $*
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsd:schema version="1.0"
3
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4
+ targetNamespace="http://mappum.ivmx.pl/client">
5
+ <xsd:element name="client">
6
+ <xsd:complexType>
7
+ <xsd:sequence>
8
+ <xsd:element name="title" type="xsd:string" maxOccurs="1"/>
9
+ <xsd:element name="id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
10
+ <xsd:element name="first_name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
11
+ <xsd:element name="surname" type="xsd:string" minOccurs="0" maxOccurs="1"/>
12
+ <xsd:element name="sex_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
13
+ <xsd:element name="phones" type="xsd:string" minOccurs="0" maxOccurs="20"/>
14
+ <xsd:element name="emails" type="xsd:string" minOccurs="0" maxOccurs="3"/>
15
+ <xsd:element name="main_phone" type="xsd:string" minOccurs="0" maxOccurs="1"/>
16
+ <xsd:element name="main_phone_type" type="xsd:string" minOccurs="0" maxOccurs="1"/>
17
+ <xsd:element name="address" minOccurs="0" maxOccurs="1">
18
+ <xsd:complexType>
19
+ <xsd:sequence>
20
+ <xsd:element name="street" type="xsd:string"/>
21
+ <xsd:element name="city" type="xsd:string" minOccurs="0"/>
22
+ </xsd:sequence>
23
+ </xsd:complexType>
24
+ </xsd:element>
25
+ </xsd:sequence>
26
+ </xsd:complexType>
27
+ </xsd:element>
28
+ </xsd:schema>
29
+
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsd:schema version="1.0"
3
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4
+ targetNamespace="http://mappum.ivmx.pl/person"
5
+ xmlns:tns="http://mappum.ivmx.pl/person">
6
+ <xsd:element name="person">
7
+ <xsd:complexType>
8
+ <xsd:sequence>
9
+ <xsd:element name="title" type="xsd:string" maxOccurs="1"/>
10
+ <xsd:element name="person_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
11
+ <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>
12
+ <xsd:element name="surname" type="xsd:string" minOccurs="0" maxOccurs="1"/>
13
+ <xsd:element name="sex" type="xsd:string" minOccurs="0" maxOccurs="1"/>
14
+ <xsd:element name="email1" type="xsd:string" minOccurs="0" maxOccurs="1"/>
15
+ <xsd:element name="email2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
16
+ <xsd:element name="email3" type="xsd:string" minOccurs="0" maxOccurs="1"/>
17
+ <xsd:element name="main_phone" type="tns:phone" minOccurs="0" maxOccurs="1"/>
18
+ <xsd:element name="address" minOccurs="0" maxOccurs="1">
19
+ <xsd:complexType>
20
+ <xsd:sequence>
21
+ <xsd:element name="street" type="xsd:string"/>
22
+ <xsd:element name="city" type="xsd:string" minOccurs="0"/>
23
+ </xsd:sequence>
24
+ </xsd:complexType>
25
+ </xsd:element>
26
+ <xsd:element name="phones" type="tns:phone" minOccurs="0" maxOccurs="5"/>
27
+ </xsd:sequence>
28
+ </xsd:complexType>
29
+ </xsd:element>
30
+ <xsd:complexType name="phone">
31
+ <xsd:sequence>
32
+ <xsd:element name="number" type="xsd:string"/>
33
+ <xsd:element name="extension" type="xsd:string" minOccurs="0"/>
34
+ <xsd:element name="type" type="xsd:string" minOccurs="0"/>
35
+ </xsd:sequence>
36
+ </xsd:complexType>
37
+ </xsd:schema>
38
+
@@ -0,0 +1,24 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'mappum/ruby_transform'
4
+ require 'test/unit'
5
+ require 'sample/example_conversions'
6
+
7
+ class TestConversions < Test::Unit::TestCase
8
+ def test_conv
9
+ catalogue = Mappum.catalogue
10
+ rt = Mappum::RubyTransform.new(catalogue)
11
+ typed = OpenStruct.new
12
+ typed.date = Date.today
13
+ typed.time = Time.parse "Tue, 06 Oct 2009 10:12:32 +0200"
14
+ typed.fixnum = 982147
15
+ typed.float = 219830.398274
16
+ stringed = rt.transform(typed,catalogue[:typed])
17
+ assert_equal(Date.today.to_s,stringed.date)
18
+ assert_equal("Tue, 06 Oct 2009 10:12:32 +0200",stringed.time)
19
+ assert_equal("982147",stringed.fixnum)
20
+ assert_equal("219830.398274",stringed.float)
21
+ typed2 = rt.transform(stringed,catalogue[:stringed])
22
+ assert_equal(typed,typed2)
23
+ end
24
+ end
@@ -0,0 +1,175 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+ #TODO fix imports
3
+ require 'mappum/ruby_transform'
4
+ require 'test/unit'
5
+ require 'sample/example_map'
6
+
7
+ Group = Struct.new(:main, :list)
8
+ ClientList = Struct.new(:leader, :clients)
9
+
10
+ class TestExample < Test::Unit::TestCase
11
+ def stest_map
12
+ catalogue = Mappum.catalogue("CRM-ERP")
13
+
14
+ main_map = catalogue[ERP::Person]
15
+
16
+ assert_equal(ERP::Person, main_map.from.clazz)
17
+ assert_equal(CRM::Client, main_map.to.clazz)
18
+ #assert_equal(5, main_map.maps.size)
19
+
20
+ # check >>
21
+ map_title = main_map.maps[0]
22
+ assert_equal(:title, map_title.from.name)
23
+ assert_equal(main_map.from, map_title.from.parent)
24
+ assert_equal(:title, map_title.to.name)
25
+ assert_equal(main_map.to, map_title.to.parent)
26
+
27
+ # check >>
28
+ map_title = main_map.maps[1]
29
+ assert_equal(:person_id, map_title.from.name)
30
+ assert_equal(main_map.from, map_title.from.parent)
31
+ assert_equal(:id, map_title.to.name)
32
+ assert_equal(main_map.to, map_title.to.parent)
33
+
34
+ main_map = catalogue[CRM::Client]
35
+
36
+ # check <<
37
+ map_title = main_map.maps[0]
38
+ assert_equal(:title, map_title.from.name)
39
+ assert_equal(main_map.from, map_title.from.parent)
40
+ assert_equal(:title, map_title.to.name)
41
+ assert_equal(main_map.to, map_title.to.parent)
42
+
43
+ # check <<
44
+ map_title = main_map.maps[1]
45
+ assert_equal(:id, map_title.from.name)
46
+ assert_equal(main_map.from, map_title.from.parent)
47
+ assert_equal(:person_id, map_title.to.name)
48
+ assert_equal(main_map.to, map_title.to.parent)
49
+ end
50
+ def test_transform
51
+ catalogue = Mappum.catalogue("CRM-ERP")
52
+ rt = Mappum::RubyTransform.new(catalogue)
53
+
54
+ per = ERP::Person.new
55
+ per.title = "sir"
56
+ per.type = "NaN"
57
+ per.person_id = "asddsa"
58
+ per.sex = "M"
59
+ per.name = "Skory"
60
+ per.address = ERP::Address.new
61
+ per.address.street = "Victoria"
62
+ per.email1 = "j@j.com"
63
+ per.email2 = "k@k.com"
64
+ per.email3 = "l@l.com"
65
+ per.phones = [ERP::Phone.new("21311231"), ERP::Phone.new("21311232")]
66
+ per.main_phone = ERP::Phone.new
67
+ per.main_phone.number ="09876567"
68
+ per.main_phone.type = :mobile
69
+ per.corporation = "Corporation l.t.d."
70
+ per.date_updated = Date.today
71
+ per.spouse = ERP::Person.new
72
+ per.spouse.name = "Linda"
73
+
74
+ cli = rt.transform(per)
75
+
76
+ assert_equal("sir", cli.title)
77
+ assert_equal("ASDDSA", cli.id)
78
+ assert_equal("2", cli.sex_id)
79
+ assert_equal("Skoryski", cli.surname)
80
+ assert_equal(CRM::Address, cli.address.class)
81
+ assert_equal("Victoria", cli.address.street)
82
+ assert_equal(["j@j.com", "k@k.com", "l@l.com"], cli.emails)
83
+ assert_equal(["21311231", "21311232"], cli.phones)
84
+ assert_equal("09876567", cli.main_phone)
85
+ assert_equal("Last", cli.order_by)
86
+ assert_equal("Linda", cli.partners[0].name)
87
+ assert_equal("Wife", cli.partners[0].type)
88
+ assert_equal("Linda", cli.partners[1].name)
89
+ assert_equal("Friend", cli.partners[1].type)
90
+ assert(cli.updated.kind_of?(Time))
91
+
92
+ per2 = rt.transform(cli)
93
+ assert_equal(per, per2)
94
+ end
95
+ def test_transform_nil_array
96
+ catalogue = Mappum.catalogue("CRM-ERP")
97
+ rt = Mappum::RubyTransform.new(catalogue)
98
+
99
+ per = ERP::Person.new
100
+ per.title = "sir"
101
+ per.type = "NaN"
102
+ per.person_id = "asddsa"
103
+ per.sex = "M"
104
+ per.name = "Skory"
105
+ per.address = ERP::Address.new
106
+ per.address.street = "Victoria"
107
+ per.date_updated = Date.today
108
+
109
+
110
+ cli = rt.transform(per)
111
+ assert_equal("sir", cli.title)
112
+ assert_equal("ASDDSA", cli.id)
113
+ assert_equal("2", cli.sex_id)
114
+ assert_equal("Skoryski", cli.surname)
115
+ assert_equal(CRM::Address, cli.address.class)
116
+ assert_equal("Victoria", cli.address.street)
117
+ assert_nil(cli.phones)
118
+ assert_nil(cli.main_phone)
119
+
120
+ per2 = rt.transform(cli)
121
+ assert_equal(per, per2)
122
+ end
123
+ def test_transform_funny_array
124
+ catalogue = Mappum.catalogue("CRM-ERP")
125
+ rt = Mappum::RubyTransform.new(catalogue)
126
+
127
+ per = ERP::Person.new
128
+ per.type = "NaN"
129
+ per.email1 = "j@j.com"
130
+ per.email2 = "l@l.com"
131
+ per.main_phone = ERP::Phone.new("7869876")
132
+ per.date_updated = Date.today
133
+
134
+ cli = rt.transform(per)
135
+
136
+ assert_equal(["j@j.com", "l@l.com", nil], cli.emails)
137
+
138
+ per2 = rt.transform(cli)
139
+ assert_equal(per, per2)
140
+ end
141
+ def test_submaps
142
+ catalogue = Mappum.catalogue("CRM-ERP")
143
+ rt = Mappum::RubyTransform.new(catalogue)
144
+
145
+ per = ERP::Person.new
146
+ per.title = "sir"
147
+ per.type = "NaN"
148
+ per.person_id = "asddsa"
149
+ per.sex = "M"
150
+ per.name = "Skory"
151
+ per.address = ERP::Address.new
152
+ per.address.street = "Victoria"
153
+ per.date_updated = Date.today
154
+
155
+ group = Group.new
156
+ group.main = per
157
+ group.list = [per]
158
+ #clilist = ClientList.new
159
+ clilist = rt.transform(group,catalogue[:Group])
160
+ cli = clilist.clients[0]
161
+ assert_equal("sir", cli.title)
162
+ assert_equal("ASDDSA", cli.id)
163
+ assert_equal("2", cli.sex_id)
164
+ assert_equal("Skoryski", cli.surname)
165
+ assert_equal(CRM::Address, cli.address.class)
166
+ assert_equal("Victoria", cli.address.street)
167
+ assert_nil(cli.phones)
168
+ assert_nil(cli.main_phone)
169
+
170
+ cli1 = clilist.leader
171
+ assert_equal("sir", cli1.title)
172
+ assert_equal("ASDDSA", cli1.id)
173
+ assert_equal("2", cli1.sex_id)
174
+ end
175
+ end
@@ -0,0 +1,129 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+ #TODO fix imports
3
+ require 'mappum/ruby_transform'
4
+ require 'test/unit'
5
+ require 'sample/example_notypes'
6
+
7
+ class TestOpenStruct < Test::Unit::TestCase
8
+ def test_map
9
+ catalogue = Mappum.catalogue("NOTYPE-CRM-ERP")
10
+
11
+ main_map = catalogue[:person]
12
+
13
+ assert_equal(:person, main_map.from.clazz)
14
+ assert_equal(:client, main_map.to.clazz)
15
+ #assert_equal(5, main_map.maps.size)
16
+
17
+ # check >>
18
+ map_title = main_map.maps[0]
19
+ assert_equal(:title, map_title.from.name)
20
+ assert_equal(main_map.from, map_title.from.parent)
21
+ assert_equal(:title, map_title.to.name)
22
+ assert_equal(main_map.to, map_title.to.parent)
23
+
24
+ # check >>
25
+ map_title = main_map.maps[1]
26
+ assert_equal(:person_id, map_title.from.name)
27
+ assert_equal(main_map.from, map_title.from.parent)
28
+ assert_equal(:id, map_title.to.name)
29
+ assert_equal(main_map.to, map_title.to.parent)
30
+
31
+ main_map = catalogue[:client]
32
+ # check <<
33
+ map_title = main_map.maps[0]
34
+ assert_equal(:title, map_title.from.name)
35
+ assert_equal(main_map.from, map_title.from.parent)
36
+ assert_equal(:title, map_title.to.name)
37
+ assert_equal(main_map.to, map_title.to.parent)
38
+
39
+ # check <<
40
+ map_title = main_map.maps[1]
41
+ assert_equal(:id, map_title.from.name)
42
+ assert_equal(main_map.from, map_title.from.parent)
43
+ assert_equal(:person_id, map_title.to.name)
44
+ assert_equal(main_map.to, map_title.to.parent)
45
+ end
46
+ def test_transform
47
+ catalogue = Mappum.catalogue("NOTYPE-CRM-ERP")
48
+ rt = Mappum::RubyTransform.new(catalogue)
49
+
50
+ per = Mappum::OpenStruct.new
51
+ per.title = "sir"
52
+ per.person_id = "asddsa"
53
+ per.sex = "M"
54
+ per.name = "Skory"
55
+ per.address = Mappum::OpenStruct.new
56
+ per.address.street = "Victoria"
57
+ per.email1 = "j@j.com"
58
+ per.email2 = "k@k.com"
59
+ per.email3 = "l@l.com"
60
+
61
+ phone1 = Mappum::OpenStruct.new
62
+ phone1.number="21311231"
63
+
64
+ phone2 = Mappum::OpenStruct.new
65
+ phone2.number="21311232"
66
+
67
+ per.phones = [phone1, phone2]
68
+ per.main_phone = Mappum::OpenStruct.new
69
+ per.main_phone.number ="09876567"
70
+ per.main_phone.type = :mobile
71
+
72
+ cli = rt.transform(per,catalogue[:person])
73
+ assert_equal("sir", cli.title)
74
+ assert_equal("ASDDSA", cli.id)
75
+ assert_equal("2", cli.sex_id)
76
+ assert_equal("Skoryski", cli.surname)
77
+ assert_equal("Victoria", cli.address.street)
78
+ assert_equal(["j@j.com", "k@k.com", "l@l.com"], cli.emails)
79
+ assert_equal(["21311231", "21311232"], cli.phones)
80
+ assert_equal("09876567", cli.main_phone)
81
+
82
+ per2 = rt.transform(cli,catalogue[:client])
83
+ assert_equal(per, per2)
84
+
85
+
86
+ end
87
+ def test_transform_nil_array
88
+ catalogue = Mappum.catalogue("NOTYPE-CRM-ERP")
89
+ rt = Mappum::RubyTransform.new(catalogue)
90
+
91
+ per = Mappum::OpenStruct.new
92
+ per.title = "sir"
93
+ per.person_id = "asddsa"
94
+ per.sex = "M"
95
+ per.name = "Skory"
96
+ per.address = Mappum::OpenStruct.new
97
+ per.address.street = "Victoria"
98
+
99
+
100
+
101
+ cli = rt.transform(per,catalogue[:person])
102
+ assert_equal("sir", cli.title)
103
+ assert_equal("ASDDSA", cli.id)
104
+ assert_equal("2", cli.sex_id)
105
+ assert_equal("Skoryski", cli.surname)
106
+ assert_equal("Victoria", cli.address.street)
107
+ assert_nil(cli.phones)
108
+ assert_nil(cli.main_phone)
109
+
110
+ per2 = rt.transform(cli,catalogue[:client])
111
+ assert_equal(per, per2)
112
+ end
113
+ def test_transform_funny_array
114
+ catalogue = Mappum.catalogue("NOTYPE-CRM-ERP")
115
+ rt = Mappum::RubyTransform.new(catalogue)
116
+
117
+ per = Mappum::OpenStruct.new
118
+ per.email1 = "j@j.com"
119
+ per.email2 = "l@l.com"
120
+ per.main_phone = Mappum::OpenStruct.new
121
+ per.main_phone.number ="09876567"
122
+
123
+ cli = rt.transform(per,catalogue[:person])
124
+ assert_equal(["j@j.com", "l@l.com", nil], cli.emails)
125
+
126
+ per2 = rt.transform(cli,catalogue[:client])
127
+ assert_equal(per, per2)
128
+ end
129
+ end
@@ -0,0 +1,108 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+ #TODO fix imports
3
+ require 'mappum/xml_transform'
4
+ require 'test/unit'
5
+ require 'rubygems'
6
+ gem 'soap4r'
7
+ gem 'facets'
8
+ require 'facets/equatable'
9
+ require 'soap/marshal'
10
+
11
+ wl = Mappum::WorkdirLoader.new("sample/server/schema", "sample/server/map")
12
+ wl.generate_and_require
13
+
14
+ class Erp::Person
15
+ include Equatable(:title, :person_id, :name, :surname, :sex, :email1,
16
+ :email2, :email3, :main_phone, :address, :phones)
17
+ end
18
+ class Erp::Phone
19
+ include Equatable(:number, :extension, :type)
20
+ end
21
+ class Erp::Person::Address
22
+ include Equatable(:city, :street)
23
+ end
24
+
25
+ class TestExample < Test::Unit::TestCase
26
+ def initialize(*args)
27
+ super(*args)
28
+ @rt = Mappum::XmlTransform.new
29
+ @personMapper = Erp::ErpErp_personMapper.new
30
+ @clientMapper = Crm_clientMapper.new
31
+ end
32
+ def test_xml_transform
33
+
34
+ xml = IO.read("sample/person_fixture.xml")
35
+
36
+ xml_cli = @rt.transform(xml)
37
+
38
+ xml2 = @rt.transform(xml_cli)
39
+
40
+ assert_equal(xml.strip, xml2.strip)
41
+
42
+ end
43
+ def test_transform
44
+
45
+ xml = IO.read("sample/person_fixture.xml")
46
+ clixml = @rt.transform(xml)
47
+ cli = @clientMapper.xml2obj(clixml)
48
+
49
+ assert_equal("sir", cli.title)
50
+ assert_equal("ASDDSA", cli.id)
51
+ assert_equal("2", cli.sex_id)
52
+ assert_equal("Skoryski", cli.surname)
53
+ assert_equal(Client::Address, cli.address.class)
54
+ assert_equal("Victoria", cli.address.street)
55
+ assert_equal(["j@j.com", "k@k.com", "l@l.com"], cli.emails)
56
+ assert_equal(["21311231", "21311232"], cli.phones)
57
+ assert_equal("09876567", cli.main_phone)
58
+
59
+ xml2 = @rt.transform(clixml)
60
+
61
+ assert_equal(xml.strip, xml2.strip)
62
+
63
+
64
+ end
65
+ def test_transform_nil_array
66
+
67
+ per = Erp::Person.new
68
+ per.title = "sir"
69
+ per.person_id = "asddsa"
70
+ per.sex = "M"
71
+ per.name = "Skory"
72
+ per.address = Erp::Person::Address.new
73
+ per.address.street = "Victoria"
74
+ per.phones = nil
75
+
76
+ perxml = @personMapper.obj2xml(per)
77
+ clixml = @rt.transform(perxml)
78
+ cli = @clientMapper.xml2obj(clixml)
79
+
80
+ assert_equal("sir", cli.title)
81
+ assert_equal("ASDDSA", cli.id)
82
+ assert_equal("2", cli.sex_id)
83
+ assert_equal("Skoryski", cli.surname)
84
+ assert_equal(Client::Address, cli.address.class)
85
+ assert_equal("Victoria", cli.address.street)
86
+ assert_nil(cli.phones)
87
+ assert_nil(cli.main_phone)
88
+ per2xml = @rt.transform(clixml)
89
+
90
+ per2 = @personMapper.xml2obj(per2xml)
91
+
92
+ assert_equal(per, per2)
93
+ end
94
+ def test_transform_funny_array
95
+ catalogue = Mappum.catalogue
96
+ rt = Mappum::RubyTransform.new(catalogue)
97
+
98
+ per = Erp::Person.new
99
+ per.email1 = "j@j.com"
100
+ per.email2 = "l@l.com"
101
+ per.main_phone = Erp::Phone.new("7869876")
102
+ cli = rt.transform(per)
103
+ assert_equal(["j@j.com", "l@l.com", nil], cli.emails)
104
+
105
+ per2 = rt.transform(cli)
106
+ assert_equal(per, per2)
107
+ end
108
+ end