hypertext_client 0.0.2 → 0.0.4
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 +8 -0
- data/lib/hypertext_client/hypertext_client.rb +6 -8
- data/test/test_hypertext_client.rb +13 -1
- metadata +12 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 0.0.4 (October 7, 2010)
|
2
|
+
|
3
|
+
Handle has_property_url calls better, use more explicit logic
|
4
|
+
|
5
|
+
## 0.0.3 (October 4, 2010)
|
6
|
+
|
7
|
+
Added gitignore, ignore bundle and rvmrc files
|
8
|
+
|
1
9
|
## 0.0.2 (September 24, 2010)
|
2
10
|
|
3
11
|
Support belongs_to for parent/child relationships, client classes in module.
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
# Hypertext provides an HTTP client based on HTTParty, with a few assumptions baked in.
|
20
20
|
module HypertextClient
|
21
|
-
VERSION = '0.0.
|
21
|
+
VERSION = '0.0.4'
|
22
22
|
|
23
23
|
extend ActiveSupport::Concern
|
24
24
|
# Include HTTParty
|
@@ -40,13 +40,11 @@ module HypertextClient
|
|
40
40
|
#
|
41
41
|
# @see HTTParty
|
42
42
|
def method_missing(name, *args)
|
43
|
-
if name =~ /^has_(
|
43
|
+
if name =~ /^has_(\w+)_url\?$/
|
44
|
+
super(name, *args)
|
45
|
+
elsif name =~ /^has_(\w+)\?$/
|
44
46
|
field = $1.to_sym
|
45
|
-
|
46
|
-
super(name, *args)
|
47
|
-
else
|
48
|
-
has_related? field
|
49
|
-
end
|
47
|
+
super(name, *args) ? super(field, *args) : has_related?(field)
|
50
48
|
elsif self.respond_to?((name.to_s + '_url').to_sym)
|
51
49
|
self.get_related(name)
|
52
50
|
else
|
@@ -114,7 +112,7 @@ module HypertextClient
|
|
114
112
|
path = ''
|
115
113
|
end
|
116
114
|
|
117
|
-
if self.parents.count > 0
|
115
|
+
if self.parents.count > 0 && !(path =~ %r(http://))
|
118
116
|
options = args.first
|
119
117
|
raise MissingArgumentError.new("Options hash required; must include parent ids") unless options.is_a? Hash
|
120
118
|
self.parents.each do |parent|
|
@@ -23,7 +23,7 @@ FakeWeb.register_uri(:get,
|
|
23
23
|
|
24
24
|
FakeWeb.register_uri(:get,
|
25
25
|
FAKE_ENDPOINT + '/widgets/frobby_widget',
|
26
|
-
:body => {:name => 'Frobby Widget', :knob_url => FAKE_ENDPOINT + '/knobs/excellent_knob'}.to_json,
|
26
|
+
:body => {:name => 'Frobby Widget', :knob_url => FAKE_ENDPOINT + '/knobs/excellent_knob', :button_url => FAKE_ENDPOINT + '/widgets/frobby_widget/buttons/red_button'}.to_json,
|
27
27
|
:content_type => 'application/json')
|
28
28
|
|
29
29
|
FakeWeb.register_uri(:get,
|
@@ -87,6 +87,11 @@ class HypertextClientTest < MiniTest::Unit::TestCase
|
|
87
87
|
knob = SkynetClient::Widget.get('frobby_widget').knob
|
88
88
|
assert_equal 'Adjustormatic', knob.label
|
89
89
|
end
|
90
|
+
|
91
|
+
def test_traverse_related_that_belongs_to
|
92
|
+
widget = SkynetClient::Widget.get 'frobby_widget'
|
93
|
+
assert_equal "Scary Red Button", widget.button.description
|
94
|
+
end
|
90
95
|
|
91
96
|
def test_has_related?
|
92
97
|
assert SkynetClient::Widget.get('frobby_widget').has_knob?
|
@@ -103,4 +108,11 @@ class HypertextClientTest < MiniTest::Unit::TestCase
|
|
103
108
|
SkynetClient::Button.get 'red_button'
|
104
109
|
end
|
105
110
|
end
|
111
|
+
|
112
|
+
def test_has_property_methods
|
113
|
+
widget = SkynetClient::Widget.get 'frobby_widget'
|
114
|
+
assert_equal widget.name, widget.has_name?
|
115
|
+
assert_nil widget.has_nonexistent_property?
|
116
|
+
assert_nil widget.has_id?
|
117
|
+
end
|
106
118
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Quid, Inc.
|
@@ -14,13 +14,14 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-10-07 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activesupport
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
26
27
|
- !ruby/object:Gem::Version
|
@@ -33,6 +34,7 @@ dependencies:
|
|
33
34
|
name: activemodel
|
34
35
|
prerelease: false
|
35
36
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
36
38
|
requirements:
|
37
39
|
- - ">="
|
38
40
|
- !ruby/object:Gem::Version
|
@@ -45,6 +47,7 @@ dependencies:
|
|
45
47
|
name: object_struct
|
46
48
|
prerelease: false
|
47
49
|
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
48
51
|
requirements:
|
49
52
|
- - ">="
|
50
53
|
- !ruby/object:Gem::Version
|
@@ -57,6 +60,7 @@ dependencies:
|
|
57
60
|
name: httparty
|
58
61
|
prerelease: false
|
59
62
|
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
60
64
|
requirements:
|
61
65
|
- - ">="
|
62
66
|
- !ruby/object:Gem::Version
|
@@ -69,6 +73,7 @@ dependencies:
|
|
69
73
|
name: fakeweb
|
70
74
|
prerelease: false
|
71
75
|
requirement: &id005 !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
72
77
|
requirements:
|
73
78
|
- - ">="
|
74
79
|
- !ruby/object:Gem::Version
|
@@ -81,6 +86,7 @@ dependencies:
|
|
81
86
|
name: json
|
82
87
|
prerelease: false
|
83
88
|
requirement: &id006 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
84
90
|
requirements:
|
85
91
|
- - ">="
|
86
92
|
- !ruby/object:Gem::Version
|
@@ -115,6 +121,7 @@ rdoc_options: []
|
|
115
121
|
require_paths:
|
116
122
|
- lib
|
117
123
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
118
125
|
requirements:
|
119
126
|
- - ">="
|
120
127
|
- !ruby/object:Gem::Version
|
@@ -122,6 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
129
|
- 0
|
123
130
|
version: "0"
|
124
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
125
133
|
requirements:
|
126
134
|
- - ">="
|
127
135
|
- !ruby/object:Gem::Version
|
@@ -133,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
141
|
requirements: []
|
134
142
|
|
135
143
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.3.
|
144
|
+
rubygems_version: 1.3.7
|
137
145
|
signing_key:
|
138
146
|
specification_version: 3
|
139
147
|
summary: An HTTP Client that can follow hypertext links.
|