dm-is-temporal 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ begin
4
4
 
5
5
  Jeweler::Tasks.new do |gem|
6
6
  gem.name = 'dm-is-temporal'
7
- gem.version = '0.2.0'
7
+ gem.version = '0.3.0'
8
8
  gem.summary = 'DataMapper plugin implementing temporal patterns'
9
9
  gem.description = gem.summary
10
10
  gem.email = 'jpkutner [a] gmail [d] com'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -7,12 +7,22 @@ module DataMapper
7
7
  def initialize(base)
8
8
  @__properties__ = []
9
9
  @__base__ = base
10
+ @__before__ = []
11
+ @__after__ = []
10
12
  end
11
13
 
12
14
  def property(*args)
13
15
  @__properties__ << args
14
16
  end
15
17
 
18
+ def before(*args, &block)
19
+ @__before__ << [args, block]
20
+ end
21
+
22
+ def after(*args, &block)
23
+ @__after__ << [args, block]
24
+ end
25
+
16
26
  def has(*args)
17
27
  raise 'Temporal associations are not supported yet!'
18
28
  end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ class MyModel
5
+ include DataMapper::Resource
6
+
7
+ property :id, Serial
8
+ property :name, String
9
+
10
+ is_temporal do
11
+ property :foo, Integer
12
+ property :bar, String
13
+
14
+ before(:save) do |m|
15
+ m.foo = 42
16
+ end
17
+
18
+ after(:create) do |m|
19
+ m.bar = 'hello'
20
+ end
21
+ end
22
+ end
23
+
24
+ describe DataMapper::Is::Temporal do
25
+
26
+ before(:all) do
27
+ DataMapper.setup(:default, "sqlite3::memory:")
28
+ DataMapper.setup(:test, "sqlite3::memory:")
29
+ DataMapper.auto_migrate!
30
+ end
31
+
32
+ describe "#before" do
33
+
34
+ subject do
35
+ MyModel.create
36
+ end
37
+
38
+ it "before hook sets foo to 42" do
39
+ subject.foo = 10
40
+ subject.save
41
+ subject.foo.should == 42
42
+ end
43
+
44
+ it "bar should == 'hello'" do
45
+ subject.foo = 10
46
+ subject.save
47
+ subject.bar.should == 'hello'
48
+ end
49
+
50
+
51
+ it "bar should == 'hello' even if changed" do
52
+ oldish = DateTime.parse('-4712-01-01T00:00:00+00:00')
53
+ nowish = DateTime.parse('2011-03-01T00:00:00+00:00')
54
+
55
+ subject.at(oldish).bar = 'quack'
56
+ subject.save
57
+ subject.at(oldish).bar.should == 'hello'
58
+
59
+ subject.instance_eval { puts self.temporal_versions.size.should == 1}
60
+
61
+ subject.at(nowish).bar = 'quack'
62
+ subject.save
63
+ subject.at(nowish).bar.should == 'quack'
64
+ subject.at(oldish).bar.should == 'hello'
65
+
66
+ subject.instance_eval { puts self.temporal_versions.size.should == 2}
67
+ end
68
+ end
69
+ end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 0.2.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joe Kutner
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-03-22 00:00:00 -05:00
17
+ date: 2011-04-11 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -34,6 +34,7 @@ files:
34
34
  - VERSION
35
35
  - lib/dm-is-temporal.rb
36
36
  - lib/dm-is-temporal/is/temporal.rb
37
+ - spec/hooks_spec.rb
37
38
  - spec/spec.opts
38
39
  - spec/spec_helper.rb
39
40
  - spec/temporal_spec.rb
@@ -68,5 +69,6 @@ signing_key:
68
69
  specification_version: 3
69
70
  summary: DataMapper plugin implementing temporal patterns
70
71
  test_files:
72
+ - spec/hooks_spec.rb
71
73
  - spec/spec_helper.rb
72
74
  - spec/temporal_spec.rb