noodnik 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,7 +32,7 @@ describe Noodnik::NagsController do
32
32
  end
33
33
 
34
34
  it "sets the provided topic as the cookie name" do
35
- @cookies.should_receive(:[]=).with(@topic.to_s, anything)
35
+ @cookies.should_receive(:[]=).with("noodnik_#{@topic}", anything)
36
36
  get :postpone, @attr
37
37
  end
38
38
 
@@ -44,7 +44,7 @@ describe Noodnik::NagsController do
44
44
 
45
45
  describe "GET 'complete'" do
46
46
  it "removes the nag cookie" do
47
- @cookies.should_receive(:delete).with(@topic.to_s)
47
+ @cookies.should_receive(:delete).with("noodnik_#{@topic}")
48
48
  get :complete, @attr
49
49
  end
50
50
  end
@@ -108,12 +108,6 @@ describe Noodnik::NagsController do
108
108
  end
109
109
  end
110
110
 
111
- def set_current_user_id(user_id)
112
- Noodnik.setup do |config|
113
- config.current_user_id = lambda { user_id }
114
- end
115
- end
116
-
117
111
  def stub_time
118
112
  t = Time.parse("01/01/2010 10:00")
119
113
  Time.stub!(:now).and_return(t)
@@ -10,9 +10,7 @@ describe Noodnik::NagsHelper do
10
10
  describe "when signed in" do
11
11
  before :each do
12
12
  @user_id = 1
13
- Noodnik.setup do |config|
14
- config.current_user_id = lambda { @user_id }
15
- end
13
+ set_current_user_id(@user_id)
16
14
  end
17
15
 
18
16
  after :each do
@@ -25,13 +23,13 @@ describe Noodnik::NagsHelper do
25
23
  end.should match(%r[<div class="noodnik-nag">.*</div>])
26
24
  end
27
25
 
28
- it "should yield the block for a new topic" do
26
+ it "yields the block for a new topic" do
29
27
  helper.nag_user_to :register do |nag|
30
28
  "Register!"
31
29
  end.should include("Register!")
32
30
  end
33
31
 
34
- it "should not yield the block if postponed" do
32
+ it "does not yield the block if topic has been postponed" do
35
33
  Noodnik::Nag.create! user_id: @user_id, topic: @topic, next_nag: 2.weeks.from_now
36
34
 
37
35
  helper.nag_user_to :register do |nag|
@@ -39,7 +37,7 @@ describe Noodnik::NagsHelper do
39
37
  end.should be_nil
40
38
  end
41
39
 
42
- it "should yield the block if postpone expired" do
40
+ it "yields the block if postpone expired" do
43
41
  Noodnik::Nag.create! user_id: @user_id, topic: @topic, next_nag: 1.week.ago
44
42
 
45
43
  helper.nag_user_to :register do |nag|
@@ -47,27 +45,72 @@ describe Noodnik::NagsHelper do
47
45
  end.should include("Register!")
48
46
  end
49
47
 
50
- it "should not yield the block if completed" do
48
+ it "does not yield the block if topic was completed" do
51
49
  Noodnik::Nag.create! user_id: @user_id, topic: @topic, next_nag: 10.weeks.ago, completed: true
52
50
 
53
51
  helper.nag_user_to :register do |nag|
54
52
  "I should not be returned!"
55
53
  end.should be_nil
56
54
  end
55
+ end
57
56
 
57
+ describe "when not signed in" do
58
+ before :each do
59
+ set_current_user_id(nil)
60
+ @cookies = mock('cookies')
61
+ helper.stub!(:cookies).and_return(@cookies)
62
+ end
63
+
64
+ it "yields the block in a div with class 'noodnik-nag'" do
65
+ @cookies.should_receive(:[]).with(:register).and_return(nil)
66
+ helper.nag_user_to :register do |nag|
67
+ "I should be in a <div>!"
68
+ end.should match(%r[<div class="noodnik-nag">.*</div>])
69
+ end
70
+
71
+ it "yields the block for a new topic" do
72
+ @cookies.should_receive(:[]).with(:register).and_return(nil)
73
+ helper.nag_user_to :register do |nag|
74
+ "Register!"
75
+ end.should include("Register!")
76
+ end
77
+
78
+ it "does not yield the block if topic has been postponed" do
79
+ @cookies.should_receive(:[]).with(:register).and_return(2.weeks.from_now.to_s)
80
+ helper.nag_user_to :register do |nag|
81
+ "I should not be returned!"
82
+ end.should be_nil
83
+ end
84
+
85
+ it "yields the block if postpone expired" do
86
+ @cookies.should_receive(:[]).with(:register).and_return(2.weeks.ago.to_s)
87
+
88
+ helper.nag_user_to :register do |nag|
89
+ "Register!"
90
+ end.should include("Register!")
91
+ end
92
+
93
+ it "does not yield the block if topic was completed" do
94
+ @cookies.should_receive(:[]).with(:register).and_return('complete')
95
+
96
+ helper.nag_user_to :register do |nag|
97
+ "I should not be returned!"
98
+ end.should be_nil
99
+ end
58
100
  end
101
+
59
102
  end
60
103
 
61
104
  describe "link_to" do
62
105
  describe "with html_options provided" do
63
106
  before :each do
64
107
  @link = nag_user_to :register do
65
- link_to 'google.com', 'www.google.com', class: 'foo'
108
+ link_to 'google.com', 'www.google.com', class: 'foo'
66
109
  end
67
110
  end
68
111
 
69
- it "adds 'data-noodnik-topic' with the correct topic" do
70
- @link.should include('data-noodnik-topic="register"')
112
+ it "adds 'data-noodnik-complete-path' with the correct topic" do
113
+ @link.should include('data-noodnik-complete-path="/noodnik/complete?topic=register"')
71
114
  end
72
115
 
73
116
  it "adds class 'noodnik-complete'" do
@@ -82,8 +125,8 @@ describe Noodnik::NagsHelper do
82
125
  end
83
126
  end
84
127
 
85
- it "adds 'data-noodnik-topic' with the correct topic when no html_options provided" do
86
- @link.should include('data-noodnik-topic="register"')
128
+ it "adds 'data-noodnik-complete-path' with the correct topic" do
129
+ @link.should include('data-noodnik-complete-path="/noodnik/complete?topic=register"')
87
130
  end
88
131
 
89
132
  it "adds class 'noodnik-complete'" do
@@ -98,7 +141,7 @@ describe Noodnik::NagsHelper do
98
141
  postpone_for 14.days
99
142
  end
100
143
  end
101
-
144
+
102
145
  it "prompts a default message of 'Remind me in 14 days'" do
103
146
  @link.should include('Remind me in 14 days')
104
147
  end
@@ -115,10 +158,11 @@ describe Noodnik::NagsHelper do
115
158
  @link.should include("topic=register")
116
159
  end
117
160
 
118
- it "should have class 'noodnik-postpone'" do
161
+ it "has class 'noodnik-postpone'" do
119
162
  @link.should include("noodnik-postpone")
120
163
  end
121
164
 
165
+ # postpone_for is the only type of link inside a nag_user_to block that *should'nt* get class 'noodnik-complete'
122
166
  it "does not add class 'noodnik-complete'" do
123
167
  @link.should_not include("noodnik-complete")
124
168
  end
@@ -1,6 +1,13 @@
1
1
  require 'rubygems'
2
2
  require 'spork'
3
3
 
4
+
5
+ def set_current_user_id(user_id)
6
+ Noodnik.setup do |config|
7
+ config.current_user_id = lambda { user_id }
8
+ end
9
+ end
10
+
4
11
  Spork.prefork do
5
12
  # Loading more in this block will cause your tests to run faster. However,
6
13
  # if you change any configuration or code from libraries loaded here, you'll
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noodnik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-03 00:00:00.000000000Z
12
+ date: 2011-09-22 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: A simple Rails solution for reminding users to do stuff.
15
15
  email: rauchy@gmail.com
@@ -25,11 +25,14 @@ files:
25
25
  - app/assets/stylesheets/noodnik/nags.css
26
26
  - app/views/layouts/application.html.erb
27
27
  - app/views/layouts/noodnik/application.html.erb
28
+ - app/models/noodnik/cookie_nag.rb
28
29
  - app/models/noodnik/nag.rb
29
30
  - app/helpers/noodnik/nags_helper.rb
30
31
  - app/helpers/noodnik/application_helper.rb
31
32
  - config/routes.rb
32
33
  - db/migrate/20110813042447_create_noodnik_nags.rb
34
+ - lib/generators/noodnik/install/install_generator.rb
35
+ - lib/generators/noodnik/install/templates/initializer.rb
33
36
  - lib/noodnik.rb
34
37
  - lib/noodnik/engine.rb
35
38
  - lib/noodnik/railtie.rb