nokogiri-happymapper 0.6.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +64 -5
  3. data/README.md +296 -192
  4. data/lib/happymapper/anonymous_mapper.rb +46 -43
  5. data/lib/happymapper/attribute.rb +7 -5
  6. data/lib/happymapper/element.rb +19 -22
  7. data/lib/happymapper/item.rb +19 -21
  8. data/lib/happymapper/supported_types.rb +20 -28
  9. data/lib/happymapper/text_node.rb +4 -3
  10. data/lib/happymapper/version.rb +3 -1
  11. data/lib/happymapper.rb +336 -362
  12. data/lib/nokogiri-happymapper.rb +4 -0
  13. metadata +124 -105
  14. data/spec/attribute_default_value_spec.rb +0 -50
  15. data/spec/attributes_spec.rb +0 -36
  16. data/spec/fixtures/address.xml +0 -9
  17. data/spec/fixtures/ambigous_items.xml +0 -22
  18. data/spec/fixtures/analytics.xml +0 -61
  19. data/spec/fixtures/analytics_profile.xml +0 -127
  20. data/spec/fixtures/atom.xml +0 -19
  21. data/spec/fixtures/commit.xml +0 -52
  22. data/spec/fixtures/current_weather.xml +0 -89
  23. data/spec/fixtures/current_weather_missing_elements.xml +0 -18
  24. data/spec/fixtures/default_namespace_combi.xml +0 -6
  25. data/spec/fixtures/dictionary.xml +0 -20
  26. data/spec/fixtures/family_tree.xml +0 -21
  27. data/spec/fixtures/inagy.xml +0 -85
  28. data/spec/fixtures/lastfm.xml +0 -355
  29. data/spec/fixtures/multiple_namespaces.xml +0 -170
  30. data/spec/fixtures/multiple_primitives.xml +0 -5
  31. data/spec/fixtures/optional_attributes.xml +0 -6
  32. data/spec/fixtures/pita.xml +0 -133
  33. data/spec/fixtures/posts.xml +0 -23
  34. data/spec/fixtures/product_default_namespace.xml +0 -18
  35. data/spec/fixtures/product_no_namespace.xml +0 -10
  36. data/spec/fixtures/product_single_namespace.xml +0 -10
  37. data/spec/fixtures/quarters.xml +0 -19
  38. data/spec/fixtures/radar.xml +0 -21
  39. data/spec/fixtures/set_config_options.xml +0 -3
  40. data/spec/fixtures/statuses.xml +0 -422
  41. data/spec/fixtures/subclass_namespace.xml +0 -50
  42. data/spec/fixtures/unformatted_address.xml +0 -1
  43. data/spec/fixtures/wrapper.xml +0 -11
  44. data/spec/happymapper/attribute_spec.rb +0 -12
  45. data/spec/happymapper/element_spec.rb +0 -9
  46. data/spec/happymapper/item_spec.rb +0 -136
  47. data/spec/happymapper/text_node_spec.rb +0 -9
  48. data/spec/happymapper_parse_spec.rb +0 -113
  49. data/spec/happymapper_spec.rb +0 -1129
  50. data/spec/has_many_empty_array_spec.rb +0 -43
  51. data/spec/ignay_spec.rb +0 -95
  52. data/spec/inheritance_spec.rb +0 -107
  53. data/spec/mixed_namespaces_spec.rb +0 -61
  54. data/spec/parse_with_object_to_update_spec.rb +0 -111
  55. data/spec/spec_helper.rb +0 -7
  56. data/spec/to_xml_spec.rb +0 -201
  57. data/spec/to_xml_with_namespaces_spec.rb +0 -232
  58. data/spec/wilcard_tag_name_spec.rb +0 -96
  59. data/spec/wrap_spec.rb +0 -82
  60. data/spec/xpath_spec.rb +0 -89
@@ -1,113 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe HappyMapper do
4
-
5
- context ".parse" do
6
-
7
- context "on a single root node" do
8
-
9
- subject { described_class.parse fixture_file('address.xml') }
10
-
11
- it "should parse child elements" do
12
- expect(subject.street).to eq("Milchstrasse")
13
- expect(subject.housenumber).to eq("23")
14
- expect(subject.postcode).to eq("26131")
15
- expect(subject.city).to eq("Oldenburg")
16
- end
17
-
18
- it "should not create a content entry when the xml contents no text content" do
19
- expect(subject).not_to respond_to :content
20
- end
21
-
22
- context "child elements with attributes" do
23
-
24
- it "should parse the attributes" do
25
- expect(subject.country.code).to eq("de")
26
- end
27
-
28
- it "should parse the content" do
29
- expect(subject.country.content).to eq("Germany")
30
- end
31
-
32
- end
33
-
34
- end
35
-
36
- context "element names with special characters" do
37
- subject { described_class.parse fixture_file('ambigous_items.xml') }
38
-
39
- it "should create accessor methods with similar names" do
40
- expect(subject.my_items.item).to be_kind_of Array
41
- end
42
- end
43
-
44
- context "element names with camelCased elements and Capital Letters" do
45
-
46
- subject { described_class.parse fixture_file('subclass_namespace.xml') }
47
-
48
- it "should parse the elements and values correctly" do
49
- expect(subject.title).to eq("article title")
50
- expect(subject.photo.publish_options.author).to eq("Stephanie")
51
- expect(subject.gallery.photo.title).to eq("photo title")
52
- end
53
- end
54
-
55
- context "several elements nested deep" do
56
- subject { described_class.parse fixture_file('ambigous_items.xml') }
57
-
58
- it "should parse the entire relationship" do
59
- expect(subject.my_items.item.first.item.name).to eq("My first internal item")
60
- end
61
- end
62
-
63
- context "xml that contains multiple entries" do
64
-
65
- subject { described_class.parse fixture_file('multiple_primitives.xml') }
66
-
67
- it "should parse the elements as it would a 'has_many'" do
68
-
69
- expect(subject.name).to eq("value")
70
- expect(subject.image).to eq([ "image1", "image2" ])
71
-
72
- end
73
-
74
- end
75
-
76
- context "xml with multiple namespaces" do
77
-
78
- subject { described_class.parse fixture_file('subclass_namespace.xml') }
79
-
80
- it "should parse the elements an values correctly" do
81
- expect(subject.title).to eq("article title")
82
- end
83
- end
84
-
85
- context "after_parse callbacks" do
86
- module AfterParseSpec
87
- class Address
88
- include HappyMapper
89
- element :street, String
90
- end
91
- end
92
-
93
- after do
94
- AfterParseSpec::Address.after_parse_callbacks.clear
95
- end
96
-
97
- it "should callback with the newly created object" do
98
- from_cb = nil
99
- called = false
100
- cb1 = proc { |object| from_cb = object }
101
- cb2 = proc { called = true }
102
- AfterParseSpec::Address.after_parse(&cb1)
103
- AfterParseSpec::Address.after_parse(&cb2)
104
-
105
- object = AfterParseSpec::Address.parse fixture_file('address.xml')
106
- expect(from_cb).to eq(object)
107
- expect(called).to eq(true)
108
- end
109
- end
110
-
111
- end
112
-
113
- end