veneer 0.1.1 → 0.1.2
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/VERSION +1 -1
- data/lib/veneer/adapters/activerecord/class_wrapper.rb +4 -0
- data/lib/veneer/adapters/activerecord/instance_wrapper.rb +6 -2
- data/lib/veneer/adapters/datamapper/class_wrapper.rb +8 -0
- data/lib/veneer/adapters/datamapper/instance_wrapper.rb +32 -16
- data/lib/veneer/adapters/mongomapper/class_wrapper.rb +4 -0
- data/lib/veneer/adapters/mongomapper/instance_wrapper.rb +16 -2
- data/lib/veneer/base/instance_wrapper.rb +14 -0
- data/lib/veneer/errors.rb +1 -0
- data/test/macros/class_wrapper/hooks.rb +41 -0
- data/test/support/before_save_mixin.rb +14 -0
- data/test/veneer/adapters/active_record/class_wrapper_test.rb +2 -1
- data/test/veneer/adapters/datamapper/class_wrapper_test.rb +1 -0
- data/test/veneer/adapters/mongomapper/class_wrapper_test.rb +1 -0
- data/veneer.gemspec +6 -2
- metadata +6 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -4,16 +4,20 @@ module ActiveRecord
|
|
4
4
|
class InstanceWrapper < Veneer::Base::InstanceWrapper
|
5
5
|
def update(attributes = {})
|
6
6
|
instance.update_attributes(attributes)
|
7
|
+
rescue Veneer::Errors::BeforeSaveError => e
|
8
|
+
handle_before_save_error(e)
|
7
9
|
end
|
8
10
|
|
9
11
|
def save!
|
10
12
|
instance.save!
|
11
|
-
rescue ActiveRecord::RecordInvalid => e
|
12
|
-
raise ::Veneer::Errors::NotSaved
|
13
|
+
rescue ActiveRecord::RecordInvalid, Veneer::Errors::BeforeSaveError=> e
|
14
|
+
raise ::Veneer::Errors::NotSaved, e.message
|
13
15
|
end
|
14
16
|
|
15
17
|
def save
|
16
18
|
instance.save
|
19
|
+
rescue Veneer::Errors::BeforeSaveError => e
|
20
|
+
handle_before_save_error(e)
|
17
21
|
end
|
18
22
|
end # InstanceWrapper
|
19
23
|
end # VeneerInterface
|
@@ -1,23 +1,39 @@
|
|
1
|
-
module DataMapper
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module DataMapper
|
2
|
+
module Resource
|
3
|
+
module VeneerInterface
|
4
|
+
class InstanceWrapper < ::Veneer::Base::InstanceWrapper
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
def save
|
7
|
+
result = false
|
8
|
+
instance.class.transaction do
|
9
|
+
result = instance.save
|
10
|
+
end
|
11
|
+
result
|
12
|
+
rescue ::Veneer::Errors::BeforeSaveError => e
|
13
|
+
handle_before_save_error(e)
|
14
|
+
end
|
11
15
|
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
def save!
|
17
|
+
result = false
|
18
|
+
instance.class.transaction do
|
19
|
+
result = instance.save
|
20
|
+
raise ::Veneer::Errors::NotSaved unless result
|
21
|
+
result
|
22
|
+
end
|
23
|
+
result
|
24
|
+
rescue ::Veneer::Errors::BeforeSaveError => e
|
25
|
+
raise ::Veneer::Errors::NotSaved, e.message
|
26
|
+
end
|
27
|
+
|
28
|
+
def new_record?
|
29
|
+
instance.respond_to?(:new?) ? instance.new? : instance.new_record?
|
30
|
+
end
|
15
31
|
|
16
|
-
|
17
|
-
|
18
|
-
|
32
|
+
def destroy
|
33
|
+
instance.destroy
|
34
|
+
self
|
35
|
+
end
|
19
36
|
end
|
20
37
|
end
|
21
38
|
end
|
22
39
|
end
|
23
|
-
end
|
@@ -4,8 +4,22 @@ module MongoMapper
|
|
4
4
|
class InstanceWrapper < ::Veneer::Base::InstanceWrapper
|
5
5
|
def save!
|
6
6
|
instance.save!
|
7
|
-
rescue
|
8
|
-
raise ::Veneer::Errors::NotSaved
|
7
|
+
rescue ::Veneer::Errors::BeforeSaveError => e
|
8
|
+
raise ::Veneer::Errors::NotSaved, e.message
|
9
|
+
rescue => e
|
10
|
+
raise ::Veneer::Errors::NotSaved, e.message
|
11
|
+
end
|
12
|
+
|
13
|
+
def save
|
14
|
+
instance.save
|
15
|
+
rescue ::Veneer::Errors::BeforeSaveError => e
|
16
|
+
handle_before_save_error(e)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update(*args)
|
20
|
+
instance.update(*args)
|
21
|
+
rescue ::Veneer::Errors::BeforeSaveError => e
|
22
|
+
handle_before_save_error(e)
|
9
23
|
end
|
10
24
|
end
|
11
25
|
end
|
@@ -6,6 +6,20 @@ module Veneer
|
|
6
6
|
@instance, @options = instance, opts
|
7
7
|
end
|
8
8
|
|
9
|
+
def class
|
10
|
+
@instance.class
|
11
|
+
end
|
12
|
+
|
13
|
+
def handle_before_save_error(e)
|
14
|
+
case e.message
|
15
|
+
when Array
|
16
|
+
instance.errors.add(e.message[0], e.message[1])
|
17
|
+
when String
|
18
|
+
instance.errors.add("", e.message)
|
19
|
+
end
|
20
|
+
false
|
21
|
+
end
|
22
|
+
|
9
23
|
# Checks equality of the instances
|
10
24
|
# @api public
|
11
25
|
def ==(other)
|
data/lib/veneer/errors.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
class Test::Unit::TestCase
|
2
|
+
def self.veneer_should_implement_before_save_hooks
|
3
|
+
context "impelements before_save" do
|
4
|
+
should "setup the test correctly" do
|
5
|
+
assert_not_nil @klass
|
6
|
+
assert_kind_of Class, @klass
|
7
|
+
assert_not_nil @valid_attributes
|
8
|
+
assert_kind_of Hash, @valid_attributes
|
9
|
+
end
|
10
|
+
|
11
|
+
context "before_save" do
|
12
|
+
setup do
|
13
|
+
$captures = []
|
14
|
+
Veneer(@klass).before_save :check_before_save
|
15
|
+
@klass.class_eval do
|
16
|
+
include Veneer::Test::BeforeSaveSetup
|
17
|
+
end unless Veneer::Test::BeforeSaveSetup > @klass
|
18
|
+
end
|
19
|
+
|
20
|
+
teardown{ $captures = [] }
|
21
|
+
|
22
|
+
should "run the before save block" do
|
23
|
+
Veneer(@klass).new(@valid_attributes).save
|
24
|
+
assert_contains $captures, :check_before_save
|
25
|
+
end
|
26
|
+
|
27
|
+
should "allow me to raise inside the before save without propergating the issue further" do
|
28
|
+
assert_nothing_raised do
|
29
|
+
Veneer(@klass).new(@valid_attributes.merge(:name => "raise_on_before_save")).save
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should "allow me to save! with an invalid before_save hook and do the right thing" do
|
34
|
+
assert_raise(::Veneer::Errors::NotSaved) do
|
35
|
+
Veneer(@klass).new(@valid_attributes.merge(:name => "raise_on_before_save")).save!
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Veneer
|
2
|
+
module Test
|
3
|
+
module BeforeSaveSetup
|
4
|
+
def check_before_save
|
5
|
+
$captures << :check_before_save
|
6
|
+
if name == "raise_on_before_save"
|
7
|
+
raise Veneer::Errors::BeforeSaveError, [:name, "cannot be raise_on_before_save"]
|
8
|
+
else
|
9
|
+
true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/veneer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{veneer}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Daniel Neighman"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-06}
|
13
13
|
s.description = %q{Veneer provides basic querying, saving, deleteing and creating of data stores.}
|
14
14
|
s.email = %q{has.sox@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -45,10 +45,12 @@ Gem::Specification.new do |s|
|
|
45
45
|
"test/macros/class_wrapper/create_macro.rb",
|
46
46
|
"test/macros/class_wrapper/delete_macro.rb",
|
47
47
|
"test/macros/class_wrapper/find_macro.rb",
|
48
|
+
"test/macros/class_wrapper/hooks.rb",
|
48
49
|
"test/macros/instance_wrapper/destroy_macro.rb",
|
49
50
|
"test/macros/instance_wrapper/new_record_macro.rb",
|
50
51
|
"test/macros/instance_wrapper/save_macro.rb",
|
51
52
|
"test/macros/veneer_constants_interface.rb",
|
53
|
+
"test/support/before_save_mixin.rb",
|
52
54
|
"test/support/helpers.rb",
|
53
55
|
"test/test_helper.rb",
|
54
56
|
"test/veneer/adapters/active_record/active_record_setup.rb",
|
@@ -74,10 +76,12 @@ Gem::Specification.new do |s|
|
|
74
76
|
"test/macros/class_wrapper/create_macro.rb",
|
75
77
|
"test/macros/class_wrapper/delete_macro.rb",
|
76
78
|
"test/macros/class_wrapper/find_macro.rb",
|
79
|
+
"test/macros/class_wrapper/hooks.rb",
|
77
80
|
"test/macros/instance_wrapper/destroy_macro.rb",
|
78
81
|
"test/macros/instance_wrapper/new_record_macro.rb",
|
79
82
|
"test/macros/instance_wrapper/save_macro.rb",
|
80
83
|
"test/macros/veneer_constants_interface.rb",
|
84
|
+
"test/support/before_save_mixin.rb",
|
81
85
|
"test/support/helpers.rb",
|
82
86
|
"test/test_helper.rb",
|
83
87
|
"test/veneer/adapters/active_record/active_record_setup.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veneer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Neighman
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-06 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -51,10 +51,12 @@ files:
|
|
51
51
|
- test/macros/class_wrapper/create_macro.rb
|
52
52
|
- test/macros/class_wrapper/delete_macro.rb
|
53
53
|
- test/macros/class_wrapper/find_macro.rb
|
54
|
+
- test/macros/class_wrapper/hooks.rb
|
54
55
|
- test/macros/instance_wrapper/destroy_macro.rb
|
55
56
|
- test/macros/instance_wrapper/new_record_macro.rb
|
56
57
|
- test/macros/instance_wrapper/save_macro.rb
|
57
58
|
- test/macros/veneer_constants_interface.rb
|
59
|
+
- test/support/before_save_mixin.rb
|
58
60
|
- test/support/helpers.rb
|
59
61
|
- test/test_helper.rb
|
60
62
|
- test/veneer/adapters/active_record/active_record_setup.rb
|
@@ -101,10 +103,12 @@ test_files:
|
|
101
103
|
- test/macros/class_wrapper/create_macro.rb
|
102
104
|
- test/macros/class_wrapper/delete_macro.rb
|
103
105
|
- test/macros/class_wrapper/find_macro.rb
|
106
|
+
- test/macros/class_wrapper/hooks.rb
|
104
107
|
- test/macros/instance_wrapper/destroy_macro.rb
|
105
108
|
- test/macros/instance_wrapper/new_record_macro.rb
|
106
109
|
- test/macros/instance_wrapper/save_macro.rb
|
107
110
|
- test/macros/veneer_constants_interface.rb
|
111
|
+
- test/support/before_save_mixin.rb
|
108
112
|
- test/support/helpers.rb
|
109
113
|
- test/test_helper.rb
|
110
114
|
- test/veneer/adapters/active_record/active_record_setup.rb
|