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