codebrulee-attr_remote 0.0.2 → 0.0.3

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/attr_remote.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "attr_remote"
3
- s.version = "0.0.2"
3
+ s.version = "0.0.3"
4
4
  s.date = "2008-01-06"
5
5
  s.summary = "Painlessly integrate ActiveResource into ActiveRecord."
6
6
  s.email = "smithk14@gmail.com"
data/lib/attr_remote.rb CHANGED
@@ -64,6 +64,55 @@ module AttrRemote
64
64
 
65
65
  # def validate_remote_user_on_create; end
66
66
  def validate_#{remote_instance_meth}_on_create; end
67
+
68
+ # before_update :update_remote_user
69
+ before_update :update_#{remote_instance_meth}
70
+
71
+ # def update_remote_user
72
+ # if self.remote_user_id
73
+ # remote_hash = {}
74
+ # self.class.remote_attributes.each do |attr|
75
+ # remote_hash[attr.to_sym] = self.send(attr.to_sym)
76
+ # end
77
+ # remote_user.load(remote_hash)
78
+ # remote_user.save
79
+ #
80
+ # unless @#{remote_instance_meth}.valid?
81
+ # remote_user.errors.each do |attr, err|
82
+ # errors.add(attr, err)
83
+ # end
84
+ # return false
85
+ # else
86
+ # return true
87
+ # end
88
+ # end
89
+ # end
90
+ def update_#{remote_instance_meth}
91
+ if self.#{remote_instance_id}
92
+ remote_hash = {}
93
+ self.class.remote_attributes.each do |attr|
94
+ remote_hash[attr.to_sym] = self.send(attr.to_sym)
95
+ end
96
+ #{remote_instance_meth}.load(remote_hash)
97
+ #{remote_instance_meth}.save
98
+
99
+ unless @#{remote_instance_meth}.valid?
100
+ #{remote_instance_meth}.errors.each do |attr, err|
101
+ errors.add(attr, err)
102
+ end
103
+ return false
104
+ else
105
+ return true
106
+ end
107
+ end
108
+ end
109
+ private :update_#{remote_instance_meth}
110
+
111
+ # validate_on_update :validate_remote_user_on_update
112
+ validate_on_update :validate_#{remote_instance_meth}_on_update
113
+
114
+ # def validate_remote_user_on_update; end
115
+ def validate_#{remote_instance_meth}_on_update; end
67
116
  remote_access
68
117
 
69
118
  @remote_attributes = remote_attrs
@@ -79,7 +128,7 @@ module AttrRemote
79
128
  elsif self.#{remote_instance_meth} # elsif self.remote_user
80
129
  @#{attr} = self. # @username = self.
81
130
  #{remote_instance_meth}. # remote_user.
82
- #{attr} # username
131
+ #{attr} rescue nil # username rescue nil
83
132
  else # else
84
133
  nil # nil
85
134
  end # end
data/test/db/test.db CHANGED
Binary file
data/test/helper.rb CHANGED
@@ -29,6 +29,8 @@ ActiveResource::HttpMock.respond_to do |mock|
29
29
  'Location' => 'http://0.0.0.0:3000/users/1'
30
30
  }
31
31
 
32
+ mock.put "/users/1.xml", {}, '', 200, {}
33
+
32
34
  # bob is not so lucky
33
35
  mock.post "/bobs.xml",
34
36
  {},
data/test/models/user.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class User < ActiveRecord::Base
2
- attr_remote :name
2
+ attr_remote :name, :not_here
3
3
  end
@@ -35,6 +35,12 @@ class TestAttrRemote < Test::Unit::TestCase
35
35
  user = Factory.build(:user, :remote_user_id => 666, :name => nil)
36
36
  assert_equal '', user.name
37
37
  end
38
+
39
+ test "that an attribute that is not readable returns an empty string" do
40
+ user = Factory(:user)
41
+ user = User.find(user.id)
42
+ assert_equal '', user.not_here
43
+ end
38
44
  end
39
45
 
40
46
  context "creation" do
@@ -66,6 +72,18 @@ class TestAttrRemote < Test::Unit::TestCase
66
72
  end
67
73
 
68
74
  context "updates" do
75
+ test "that an attribute change is propogated" do
76
+ user = Factory(:user)
77
+ user.name = "boo"
78
+ assert user.save
79
+ ActiveResource::HttpMock.respond_to do |mock|
80
+ mock.get "/users/1.xml", {}, {
81
+ :name => "boo"
82
+ }.to_xml(:root => "user")
83
+ end
84
+ user = User.find(user.id)
85
+ assert_equal "boo", user.name
86
+ end
69
87
  end
70
88
 
71
89
  context "deletes" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codebrulee-attr_remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Smith