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 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.2'
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_([a-z_]+)\?$/
43
+ if name =~ /^has_(\w+)_url\?$/
44
+ super(name, *args)
45
+ elsif name =~ /^has_(\w+)\?$/
44
46
  field = $1.to_sym
45
- if field =~ /_url$/
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
- - 2
9
- version: 0.0.2
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-09-24 00:00:00 -07:00
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.6
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.