mholling-active_url 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 3
2
+ :patch: 4
3
3
  :major: 0
4
4
  :minor: 1
@@ -1,15 +1,15 @@
1
1
  module ActiveUrl
2
2
  module Callbacks
3
- def create_with_callbacks
4
- result = create_without_callbacks
5
- run_callbacks(:after_save) unless result.blank?
6
- result
3
+ def save_with_callbacks
4
+ returning(save_without_callbacks) do |result|
5
+ run_callbacks(:after_save) unless result.blank?
6
+ end
7
7
  end
8
8
 
9
9
  def self.included(base)
10
10
  base.class_eval do
11
11
  include ActiveSupport::Callbacks # Already included by ActiveRecord.
12
- alias_method_chain :create, :callbacks
12
+ alias_method_chain :save, :callbacks
13
13
  define_callbacks :after_save
14
14
  end
15
15
  end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'active_url'
@@ -20,6 +20,10 @@ describe ActiveUrl do
20
20
  end
21
21
  end
22
22
 
23
+ after(:all) do
24
+ Object.send(:remove_const, "Secret")
25
+ end
26
+
23
27
  before(:each) do
24
28
  @url = Secret.new
25
29
  @user = User.new
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveUrl do
4
+ before(:each) do
5
+ ActiveUrl::Config.stub!(:secret).and_return("secret")
6
+ end
7
+
8
+ context "instance with callbacks" do
9
+ before(:all) do
10
+ class ::Registration < ActiveUrl::Base
11
+ attribute :email
12
+ after_save :send_registration_email
13
+ end
14
+ end
15
+
16
+ after(:all) do
17
+ Object.send(:remove_const, "Registration")
18
+ end
19
+
20
+ before(:each) do
21
+ @registration = Registration.new(:email => "email@example.com")
22
+ @registration.stub!(:valid?).and_return(true)
23
+ end
24
+
25
+ it "should not run the callback when saved if the instance is invalid" do
26
+ @registration.stub!(:valid?).and_return(false)
27
+ @registration.should_not_receive(:send_registration_email)
28
+ @registration.save
29
+ end
30
+
31
+ it "should run the callback when saved if the instance is valid" do
32
+ @registration.should_receive(:send_registration_email)
33
+ @registration.save
34
+ end
35
+
36
+ it "should not run the callback when found from its ID" do
37
+ @registration.stub!(:send_registration_email).and_return(true)
38
+ @registration.save
39
+ @found = Registration.new
40
+ Registration.should_receive(:new).and_return(@found)
41
+ @found.should_not_receive(:send_registration_email)
42
+ Registration.find(@registration.id)
43
+ end
44
+ end
45
+ end
@@ -49,6 +49,10 @@ describe ActiveUrl do
49
49
  end
50
50
  end
51
51
 
52
+ after(:all) do
53
+ Object.send(:remove_const, "DerivedClass")
54
+ end
55
+
52
56
  context "instance" do
53
57
  it "should have individually accessible attribute readers" do
54
58
  @url = DerivedClass.new
@@ -103,6 +107,10 @@ describe ActiveUrl do
103
107
  end
104
108
  end
105
109
 
110
+ after(:all) do
111
+ Object.send(:remove_const, "OtherClass")
112
+ end
113
+
106
114
  it "should be based on class and attributes only" do
107
115
  @url = DerivedClass.new(:bar => "bar", :baz => "baz")
108
116
  @url2 = DerivedClass.new(:bar => "bar", :baz => "baz")
@@ -13,14 +13,13 @@ describe ActiveUrl do
13
13
  validates_format_of :email, :with => /^[\w\.=-]+@[\w\.-]+\.[a-zA-Z]{2,4}$/ix
14
14
  validates_length_of :password, :minimum => 8
15
15
  validates_numericality_of :age
16
- after_save :send_registration_email
17
-
18
- def send_registration_email
19
- @sent = true
20
- end
21
16
  end
22
17
  end
23
18
 
19
+ after(:all) do
20
+ Object.send(:remove_const, "Registration")
21
+ end
22
+
24
23
  context "when invalid" do
25
24
  before(:each) do
26
25
  @registration = Registration.new(:email => "user @ example . com", :password => "short", :age => "ten")
@@ -63,10 +62,6 @@ describe ActiveUrl do
63
62
  it "should validate numericality of an attribute" do
64
63
  @registration.errors[:age].should_not be_nil
65
64
  end
66
-
67
- it "should not execute any after_save callbacks" do
68
- @registration.instance_variables.should_not include("@sent")
69
- end
70
65
  end
71
66
  end
72
67
 
@@ -92,10 +87,6 @@ describe ActiveUrl do
92
87
  @registration.id.should == @registration.to_param
93
88
  end
94
89
 
95
- it "should execute any after_save callbacks" do
96
- @registration.instance_variables.map(&:to_s).should include("@sent")
97
- end
98
-
99
90
  context "and re-found by its class" do
100
91
  before(:each) do
101
92
  @found = Registration.find(@registration.id)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mholling-active_url
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Hollingworth
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-09 00:00:00 -07:00
12
+ date: 2009-06-21 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,7 +44,9 @@ files:
44
44
  - lib/active_url/crypto.rb
45
45
  - lib/active_url/errors.rb
46
46
  - lib/active_url/validations.rb
47
+ - rails/init.rb
47
48
  - spec/belongs_to_spec.rb
49
+ - spec/callbacks_spec.rb
48
50
  - spec/crypto_spec.rb
49
51
  - spec/instance_spec.rb
50
52
  - spec/spec_helper.rb
@@ -77,6 +79,7 @@ specification_version: 2
77
79
  summary: A Rails library for generating secret URLs.
78
80
  test_files:
79
81
  - spec/belongs_to_spec.rb
82
+ - spec/callbacks_spec.rb
80
83
  - spec/crypto_spec.rb
81
84
  - spec/instance_spec.rb
82
85
  - spec/spec_helper.rb