rets-sarmiena 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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