starburst 0.9.3 → 1.0.0
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.
- checksums.yaml +4 -4
- data/app/controllers/starburst/announcements_controller.rb +1 -1
- data/app/models/starburst/announcement.rb +0 -12
- data/app/models/starburst/announcement_view.rb +5 -0
- data/db/migrate/20141209221904_add_index_and_uniqueness_to_announcement_views.rb +5 -0
- data/lib/starburst/version.rb +1 -1
- data/spec/dummy/log/development.log +2 -0
- data/spec/dummy/log/test.log +8384 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/factories/announcement_views.rb +5 -0
- data/spec/features/announcements_spec.rb +11 -13
- data/spec/models/starburst/announcement_spec.rb +19 -15
- data/spec/models/starburst/announcement_view_spec.rb +37 -0
- metadata +7 -2
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -2,35 +2,33 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
feature 'Announcements' do
|
4
4
|
scenario 'show announcement to user' do
|
5
|
-
#@user = FactoryGirl.create(:user)
|
6
|
-
#login_as(@user, :scope => :user, :run_callbacks => false)
|
7
5
|
@current_user = FactoryGirl.create(:user)
|
8
6
|
ActionController::Base.any_instance.stub(:current_user).and_return(@current_user)
|
9
7
|
ActionView::Base.any_instance.stub(:current_user).and_return(@current_user)
|
10
|
-
|
8
|
+
FactoryGirl.create(:announcement, :body => "My announcement")
|
11
9
|
visit root_path
|
12
10
|
page.should have_content "My announcement"
|
13
11
|
end
|
14
12
|
scenario 'show no announcements if user not logged in' do
|
15
13
|
ActionController::Base.any_instance.stub(:current_user).and_return(nil)
|
16
14
|
ActionView::Base.any_instance.stub(:current_user).and_return(nil)
|
17
|
-
|
15
|
+
FactoryGirl.create(:announcement, :body => "My announcement")
|
18
16
|
visit root_path
|
19
17
|
page.should_not have_content "My announcement"
|
20
18
|
page.should have_content "Sample homepage"
|
21
19
|
end
|
22
|
-
scenario '
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
#ActionView::Base.any_instance.stub(:current_user).and_return(@current_user)
|
27
|
-
#ActionController::Base.any_instance.stub(:current_user).and_return(@current_user)
|
20
|
+
scenario 'stop showing announcement once the user has read it' do
|
21
|
+
@current_user = FactoryGirl.create(:user)
|
22
|
+
ActionController::Base.any_instance.stub(:current_user).and_return(@current_user)
|
23
|
+
ActionView::Base.any_instance.stub(:current_user).and_return(@current_user)
|
28
24
|
announcement = FactoryGirl.create(:announcement, :body => "My announcement")
|
29
25
|
visit root_path
|
30
26
|
page.should have_content "My announcement"
|
31
|
-
|
32
|
-
wait_for_ajax
|
27
|
+
FactoryGirl.create(:announcement_view, :user => @current_user, :announcement => announcement)
|
33
28
|
visit root_path
|
34
29
|
page.should_not have_content "My announcement"
|
35
30
|
end
|
36
|
-
|
31
|
+
scenario 'allow the user to click to hide the announcement' do
|
32
|
+
pending "Figure out how to best stub the current_user method for a JavaScript-enabled test"
|
33
|
+
end
|
34
|
+
end
|
@@ -6,6 +6,10 @@ describe Announcement do
|
|
6
6
|
|
7
7
|
context "a basic announcement" do
|
8
8
|
|
9
|
+
it "can't be created without a body" do
|
10
|
+
expect(Announcement.create(:body => nil)).to have(1).error_on(:body)
|
11
|
+
end
|
12
|
+
|
9
13
|
it "can be created with just a body" do
|
10
14
|
expect(Announcement.create(:body => "This is an announcement.")).to be_valid
|
11
15
|
end
|
@@ -19,32 +23,32 @@ describe Announcement do
|
|
19
23
|
context "a scheduled annoucement" do
|
20
24
|
|
21
25
|
it "does not show up past its end date" do
|
22
|
-
Announcement.create(:stop_delivering_at => 1.day.ago)
|
26
|
+
Announcement.create(:body => "test", :stop_delivering_at => 1.day.ago)
|
23
27
|
expect(Announcement.current.blank?).to eq true
|
24
28
|
end
|
25
29
|
|
26
30
|
it "shows before its end date" do
|
27
|
-
Announcement.create(:stop_delivering_at => Time.now + 1.day)
|
31
|
+
Announcement.create(:body => "test", :stop_delivering_at => Time.now + 1.day)
|
28
32
|
expect(Announcement.current.present?).to eq true
|
29
33
|
end
|
30
34
|
|
31
35
|
it "does not show up before its start date" do
|
32
|
-
Announcement.create(:start_delivering_at => Time.now + 1.day)
|
36
|
+
Announcement.create(:body => "test", :start_delivering_at => Time.now + 1.day)
|
33
37
|
expect(Announcement.current.blank?).to eq true
|
34
38
|
end
|
35
39
|
|
36
40
|
it "shows after its start date" do
|
37
|
-
Announcement.create(:start_delivering_at => 1.day.ago)
|
41
|
+
Announcement.create(:body => "test", :start_delivering_at => 1.day.ago)
|
38
42
|
expect(Announcement.current.present?).to eq true
|
39
43
|
end
|
40
44
|
|
41
45
|
it "shows up between its start and end dates" do
|
42
|
-
Announcement.create(:start_delivering_at => Time.now, :stop_delivering_at => Time.now + 1.day)
|
46
|
+
Announcement.create(:body => "test", :start_delivering_at => Time.now, :stop_delivering_at => Time.now + 1.day)
|
43
47
|
expect(Announcement.current.present?).to eq true
|
44
48
|
end
|
45
49
|
|
46
50
|
it "does not show when its start and end dates are the same" do
|
47
|
-
Announcement.create(:start_delivering_at => Time.now, :stop_delivering_at => Time.now)
|
51
|
+
Announcement.create(:body => "test", :start_delivering_at => Time.now, :stop_delivering_at => Time.now)
|
48
52
|
expect(Announcement.current.blank?).to eq true
|
49
53
|
end
|
50
54
|
|
@@ -53,16 +57,16 @@ describe Announcement do
|
|
53
57
|
context "an announcement not yet read by the current user" do
|
54
58
|
|
55
59
|
it "shows up" do
|
56
|
-
read_announcement = Announcement.create(:start_delivering_at => 1.day.ago)
|
57
|
-
unread_announcement = Announcement.create(:start_delivering_at => Time.now)
|
60
|
+
read_announcement = Announcement.create(:body => "test", :start_delivering_at => 1.day.ago)
|
61
|
+
unread_announcement = Announcement.create(:body => "test", :start_delivering_at => Time.now)
|
58
62
|
user_who_read_announcement = FactoryGirl.create(:user)
|
59
63
|
AnnouncementView.create(:announcement => read_announcement, :user => user_who_read_announcement)
|
60
64
|
expect(Announcement.unread_by(user_who_read_announcement)).to eq [unread_announcement]
|
61
65
|
end
|
62
66
|
|
63
67
|
it "shows up for the current user even when others have read it" do
|
64
|
-
read_announcement = Announcement.create(:start_delivering_at => 1.day.ago)
|
65
|
-
unread_announcement = Announcement.create(:start_delivering_at => Time.now)
|
68
|
+
read_announcement = Announcement.create(:body => "test", :start_delivering_at => 1.day.ago)
|
69
|
+
unread_announcement = Announcement.create(:body => "test", :start_delivering_at => Time.now)
|
66
70
|
user_who_read_announcement = FactoryGirl.create(:user)
|
67
71
|
user_who_read_no_announcements = FactoryGirl.create(:user)
|
68
72
|
AnnouncementView.create(:announcement => read_announcement, :user => user_who_read_announcement)
|
@@ -70,8 +74,8 @@ describe Announcement do
|
|
70
74
|
end
|
71
75
|
|
72
76
|
it "shows up for the current user even when they have read other announcements" do
|
73
|
-
read_announcement = Announcement.create(:start_delivering_at => 1.day.ago)
|
74
|
-
unread_announcement = Announcement.create(:start_delivering_at => Time.now)
|
77
|
+
read_announcement = Announcement.create(:body => "test", :start_delivering_at => 1.day.ago)
|
78
|
+
unread_announcement = Announcement.create(:body => "test", :start_delivering_at => Time.now)
|
75
79
|
user_who_read_announcement = FactoryGirl.create(:user)
|
76
80
|
AnnouncementView.create(:announcement => read_announcement, :user => user_who_read_announcement)
|
77
81
|
expect(Starburst::Announcement.current(user_who_read_announcement)).to eq unread_announcement
|
@@ -82,7 +86,7 @@ describe Announcement do
|
|
82
86
|
|
83
87
|
context "an announcement targeted to certain users" do
|
84
88
|
it "has a limited_to_users field that is retrieveable from the database" do
|
85
|
-
limited_announcement = Announcement.create(:limit_to_users => [
|
89
|
+
limited_announcement = Announcement.create(:body => "test", :limit_to_users => [
|
86
90
|
{
|
87
91
|
:field => "subscription",
|
88
92
|
:value => "",
|
@@ -93,7 +97,7 @@ describe Announcement do
|
|
93
97
|
end
|
94
98
|
|
95
99
|
it "shows up for the proper user only (one positive condition)" do
|
96
|
-
limited_announcement = Announcement.create(:limit_to_users => [
|
100
|
+
limited_announcement = Announcement.create(:body => "test", :limit_to_users => [
|
97
101
|
{
|
98
102
|
:field => "subscription",
|
99
103
|
:value => ""
|
@@ -107,7 +111,7 @@ describe Announcement do
|
|
107
111
|
|
108
112
|
it "shows up for the proper user only (method condition)" do
|
109
113
|
Starburst.user_instance_methods = ["free?"]
|
110
|
-
limited_announcement = Announcement.create(:limit_to_users => [
|
114
|
+
limited_announcement = Announcement.create(:body => "test", :limit_to_users => [
|
111
115
|
{
|
112
116
|
:field => "free?",
|
113
117
|
:value => true
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative "../../spec_helper"
|
2
|
+
|
3
|
+
module Starburst
|
4
|
+
|
5
|
+
describe AnnouncementView do
|
6
|
+
|
7
|
+
it "does not allow a user to mark two views of an announcement" do
|
8
|
+
user = FactoryGirl.create(:user)
|
9
|
+
announcement = FactoryGirl.create(:announcement)
|
10
|
+
view1 = FactoryGirl.create(:announcement_view, :user => user, :announcement => announcement)
|
11
|
+
view2 = FactoryGirl.build(:announcement_view, :user => user, :announcement => announcement)
|
12
|
+
expect(view1).to be_valid
|
13
|
+
expect(view2).to have(1).error_on(:user_id)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "allows a user to log views of different announcements" do
|
17
|
+
user = FactoryGirl.create(:user)
|
18
|
+
announcement1 = FactoryGirl.create(:announcement)
|
19
|
+
announcement2 = FactoryGirl.create(:announcement)
|
20
|
+
view1 = FactoryGirl.create(:announcement_view, :user => user, :announcement => announcement1)
|
21
|
+
view2 = FactoryGirl.create(:announcement_view, :user => user, :announcement => announcement2)
|
22
|
+
expect(view1).to be_valid
|
23
|
+
expect(view2).to be_valid
|
24
|
+
end
|
25
|
+
|
26
|
+
it "allows multiple users to view the same announcement" do
|
27
|
+
user1 = FactoryGirl.create(:user)
|
28
|
+
user2 = FactoryGirl.create(:user)
|
29
|
+
announcement = FactoryGirl.create(:announcement)
|
30
|
+
view1 = FactoryGirl.create(:announcement_view, :user => user1, :announcement => announcement)
|
31
|
+
view2 = FactoryGirl.create(:announcement_view, :user => user2, :announcement => announcement)
|
32
|
+
expect(view1).to be_valid
|
33
|
+
expect(view2).to be_valid
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: starburst
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Corey Martin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -116,6 +116,7 @@ files:
|
|
116
116
|
- config/routes.rb
|
117
117
|
- db/migrate/20141004214002_create_announcement_tables.rb
|
118
118
|
- db/migrate/20141112140703_add_category_to_starburst_announcements.rb
|
119
|
+
- db/migrate/20141209221904_add_index_and_uniqueness_to_announcement_views.rb
|
119
120
|
- lib/helpers/starburst/configuration.rb
|
120
121
|
- lib/starburst/engine.rb
|
121
122
|
- lib/starburst/version.rb
|
@@ -179,10 +180,12 @@ files:
|
|
179
180
|
- spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
180
181
|
- spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
181
182
|
- spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
183
|
+
- spec/factories/announcement_views.rb
|
182
184
|
- spec/factories/announcements.rb
|
183
185
|
- spec/factories/users.rb
|
184
186
|
- spec/features/announcements_spec.rb
|
185
187
|
- spec/models/starburst/announcement_spec.rb
|
188
|
+
- spec/models/starburst/announcement_view_spec.rb
|
186
189
|
- spec/spec_helper.rb
|
187
190
|
- spec/support/wait_for_ajax.rb
|
188
191
|
homepage: http://github.com/csm123/starburst
|
@@ -266,10 +269,12 @@ test_files:
|
|
266
269
|
- spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994
|
267
270
|
- spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6
|
268
271
|
- spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
|
272
|
+
- spec/factories/announcement_views.rb
|
269
273
|
- spec/factories/announcements.rb
|
270
274
|
- spec/factories/users.rb
|
271
275
|
- spec/features/announcements_spec.rb
|
272
276
|
- spec/models/starburst/announcement_spec.rb
|
277
|
+
- spec/models/starburst/announcement_view_spec.rb
|
273
278
|
- spec/spec_helper.rb
|
274
279
|
- spec/support/wait_for_ajax.rb
|
275
280
|
has_rdoc:
|