rets-sarmiena 0.1.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.
@@ -0,0 +1,71 @@
1
+ require "test_helper"
2
+
3
+ class TestParserCompact < Test::Unit::TestCase
4
+ def test_parse_document_raises_on_invalid_delimiter
5
+ assert_raise Rets::Parser::Compact::InvalidDelimiter do
6
+ Rets::Parser::Compact.parse_document(INVALID_DELIMETER)
7
+ end
8
+ end
9
+
10
+ def test_parse_document_uses_default_delimiter_when_none_provided
11
+ # we assert that the delimeter character getting to parse is a tab
12
+ # even though COMPACT defines no delimiter tag
13
+ Rets::Parser::Compact.expects(:parse).with("A\tB", "1\t2", /\t/)
14
+ Rets::Parser::Compact.expects(:parse).with("A\tB", "4\t5", /\t/)
15
+ Rets::Parser::Compact.parse_document(COMPACT)
16
+ end
17
+
18
+ def test_parse_document_delegates_to_parse
19
+ result = Rets::Parser::Compact.parse_document(COMPACT)
20
+
21
+ assert_equal([{"A" => "1", "B" => "2"}, {"A" => "4", "B" => "5"}], result)
22
+ end
23
+
24
+ def test_parser_rejects_empty_key_value_pairs
25
+ result = Rets::Parser::Compact.parse_document(METADATA_OBJECT)
26
+
27
+ result.each do |row|
28
+ assert !row.any? { |k,v| k.to_s.size == 0 }, "Should not contain empty keys"
29
+ end
30
+ end
31
+
32
+ def test_parse_returns_key_value_pairs
33
+ result = Rets::Parser::Compact.parse("A\tB", "1\t2")
34
+
35
+ assert_equal({"A" => "1", "B" => "2"}, result)
36
+ end
37
+
38
+ # RMLS does this. :|
39
+ def test_remaining_columns_produce_empty_string_values
40
+ columns = "A B C D"
41
+ data = "1 2"
42
+
43
+ assert_equal({"A" => "1", "B" => "2", "C" => "", "D" => ""}, Rets::Parser::Compact.parse(columns, data, / /))
44
+ end
45
+
46
+ def test_leading_empty_columns_are_preserved_with_delimiter
47
+ columns = "A\tB\tC\tD"
48
+ data = "\t\t3\t4" # first two columns are empty data.
49
+
50
+ assert_equal({"A" => "", "B" => "", "C" => "3", "D" => "4"}, Rets::Parser::Compact.parse(columns, data, /\t/))
51
+ end
52
+
53
+ def test_parse_only_accepts_regexp
54
+ assert_raises ArgumentError do
55
+ Rets::Parser::Compact.parse("a", "b", " ")
56
+ end
57
+ end
58
+
59
+ def test_parse_example
60
+ rows = Rets::Parser::Compact.parse_document(Nokogiri.parse(SAMPLE_COMPACT))
61
+
62
+ assert_equal "7", rows.first["MetadataEntryID"]
63
+ end
64
+
65
+ def test_parse_example_2
66
+ rows = Rets::Parser::Compact.parse_document(Nokogiri.parse(SAMPLE_COMPACT_2))
67
+
68
+ assert_equal "", rows.first["ModTimeStamp"]
69
+ end
70
+
71
+ end
@@ -0,0 +1,21 @@
1
+ require "test_helper"
2
+
3
+ class TestParserMultipart < Test::Unit::TestCase
4
+ def test_parse_returns_multiple_parts
5
+ headers = {"content-type"=>"image/jpeg", "content-id"=>"90020062739", "content-length"=>"10"}
6
+
7
+ parts = Rets::Parser::Multipart.parse(MULITPART_RESPONSE, "simple boundary")
8
+
9
+ assert_equal 2, parts.size
10
+
11
+ part = parts[0]
12
+
13
+ assert_equal headers.merge("object-id" => "1"), part.headers
14
+ assert_equal "xxxxxxxx", part.body.strip
15
+
16
+ part = parts[1]
17
+
18
+ assert_equal headers.merge("object-id" => "2"), part.headers
19
+ assert_equal "yyyyyyyy", part.body.strip
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rets-sarmiena
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Estately, Inc. Open Source
9
+ - Aldo Sarmiento
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-12-09 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: mocha
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 0.9.12
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: 1.5.0
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: net-http-persistent
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: "1.7"
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ description: Interface for connecting to RETS services
50
+ email:
51
+ - opensource@estately.com
52
+ - sarmiena@gmail.com
53
+ executables:
54
+ - rets
55
+ extensions: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ files:
60
+ - .gitignore
61
+ - CHANGELOG.md
62
+ - Gemfile
63
+ - Manifest.txt
64
+ - README.md
65
+ - Rakefile
66
+ - bin/rets
67
+ - lib/rets-sarmiena.rb
68
+ - lib/rets-sarmiena/version.rb
69
+ - lib/rets.rb
70
+ - lib/rets/authentication.rb
71
+ - lib/rets/client.rb
72
+ - lib/rets/metadata.rb
73
+ - lib/rets/metadata/containers.rb
74
+ - lib/rets/metadata/lookup_type.rb
75
+ - lib/rets/metadata/resource.rb
76
+ - lib/rets/metadata/rets_class.rb
77
+ - lib/rets/metadata/root.rb
78
+ - lib/rets/metadata/table.rb
79
+ - lib/rets/parser/compact.rb
80
+ - lib/rets/parser/multipart.rb
81
+ - rets-sarmiena.gemspec
82
+ - test/fixtures.rb
83
+ - test/helper.rb
84
+ - test/test_client.rb
85
+ - test/test_helper.rb
86
+ - test/test_metadata.rb
87
+ - test/test_parser_compact.rb
88
+ - test/test_parser_multipart.rb
89
+ homepage: https://github.com/sarmiena/rets
90
+ licenses: []
91
+
92
+ post_install_message:
93
+ rdoc_options: []
94
+
95
+ require_paths:
96
+ - lib
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: "0"
103
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: "0"
109
+ requirements: []
110
+
111
+ rubyforge_project: rets-sarmiena
112
+ rubygems_version: 1.8.11
113
+ signing_key:
114
+ specification_version: 3
115
+ summary: Interface for connecting to RETS services
116
+ test_files:
117
+ - test/fixtures.rb
118
+ - test/helper.rb
119
+ - test/test_client.rb
120
+ - test/test_helper.rb
121
+ - test/test_metadata.rb
122
+ - test/test_parser_compact.rb
123
+ - test/test_parser_multipart.rb