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 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.