date_book 0.0.6 → 0.1.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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -1
  3. data/.rubocop_todo.yml +2 -1
  4. data/.travis.yml +3 -0
  5. data/Gemfile +16 -4
  6. data/Gemfile.lock +14 -2
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/date_book/calendar_events.js +3 -3
  9. data/app/assets/stylesheets/date_book.css.scss +31 -2
  10. data/app/controllers/date_book/calendars_controller.rb +30 -19
  11. data/app/controllers/date_book/date_book_controller.rb +1 -1
  12. data/app/controllers/date_book/events_controller.rb +60 -62
  13. data/app/controllers/date_book/graphql_controller.rb +10 -11
  14. data/app/graphql/date_book_schema.rb +4 -4
  15. data/app/graphql/types/calendar_type.rb +4 -2
  16. data/app/graphql/types/date_time_type.rb +9 -5
  17. data/app/graphql/types/event_occurrence_type.rb +4 -2
  18. data/app/graphql/types/event_type.rb +4 -2
  19. data/app/graphql/types/mutation_type.rb +3 -1
  20. data/app/graphql/types/query_type.rb +12 -26
  21. data/app/helpers/date_book/application_helper.rb +4 -7
  22. data/app/helpers/date_book/events_helper.rb +43 -23
  23. data/app/views/date_book/application/_date_range.html.haml +3 -3
  24. data/app/views/date_book/calendars/index.html.haml +19 -3
  25. data/app/views/date_book/calendars/show.html.haml +29 -4
  26. data/app/views/date_book/events/_event.json.jbuilder +3 -1
  27. data/app/views/date_book/events/_form.html.haml +4 -4
  28. data/app/views/date_book/events/_occurrence_dates.html.haml +3 -3
  29. data/app/views/date_book/events/fields/_date.html.haml +1 -1
  30. data/app/views/date_book/events/fields/_day.html.haml +1 -1
  31. data/app/views/date_book/events/fields/_day_of_week.html.haml +3 -3
  32. data/app/views/date_book/events/fields/_duration.html.haml +3 -3
  33. data/app/views/date_book/events/fields/_interval.html.haml +1 -1
  34. data/app/views/date_book/events/fields/_time.html.haml +1 -1
  35. data/app/views/date_book/events/index.html.haml +1 -1
  36. data/app/views/date_book/events/rules/_daily.html.haml +3 -3
  37. data/app/views/date_book/events/rules/_monthly.html.haml +4 -4
  38. data/app/views/date_book/events/rules/_singular.html.haml +3 -3
  39. data/app/views/date_book/events/rules/_weekly.html.haml +4 -4
  40. data/app/views/date_book/events/show.html.haml +1 -1
  41. data/app/views/layouts/_date_book_scripts.html.haml +2 -4
  42. data/config/locales/en.yml +2 -0
  43. data/config/routes.rb +1 -1
  44. data/date_book.gemspec +25 -22
  45. data/db/migrate/20170807133845_create_calendars.rb +3 -0
  46. data/db/migrate/20170807133846_create_events.rb +3 -0
  47. data/db/migrate/20170807133847_create_schedules.rb +9 -6
  48. data/db/migrate/20170807133848_add_fields_to_schedule.rb +3 -0
  49. data/db/migrate/20170807133849_create_event_occurrences.rb +4 -3
  50. data/db/migrate/20170807133850_add_fields_to_event_occurrences.rb +3 -0
  51. data/lib/date_book.rb +11 -2
  52. data/lib/date_book/concerns/ability.rb +9 -12
  53. data/lib/date_book/concerns/acts_as_calendar.rb +5 -6
  54. data/lib/date_book/concerns/acts_as_event.rb +30 -9
  55. data/lib/date_book/concerns/acts_as_event_occurrence.rb +21 -9
  56. data/lib/date_book/concerns/acts_as_ownable.rb +9 -3
  57. data/lib/date_book/concerns/acts_as_owner.rb +5 -6
  58. data/lib/date_book/concerns/acts_as_schedule.rb +14 -7
  59. data/lib/date_book/configuration.rb +14 -11
  60. data/lib/date_book/engine.rb +7 -5
  61. data/lib/date_book/version.rb +2 -0
  62. data/lib/generators/date_book/install/install_generator.rb +27 -29
  63. data/lib/generators/date_book/install/templates/app/models/calendar.rb +4 -1
  64. data/lib/generators/date_book/install/templates/app/models/event.rb +4 -1
  65. data/lib/generators/date_book/install/templates/app/models/event_occurrence.rb +4 -1
  66. data/lib/generators/date_book/install/templates/app/models/schedule.rb +4 -1
  67. data/spec/abilities/event_spec.rb +1 -1
  68. data/spec/controllers/date_book/calendars_controller_spec.rb +48 -20
  69. data/spec/controllers/date_book/events_controller_spec.rb +145 -39
  70. data/spec/dummy/app/models/calendar.rb +3 -1
  71. data/spec/dummy/app/models/event.rb +3 -1
  72. data/spec/dummy/app/models/event_occurrence.rb +3 -1
  73. data/spec/dummy/app/models/role.rb +7 -5
  74. data/spec/dummy/app/models/schedule.rb +3 -1
  75. data/spec/dummy/app/models/user.rb +3 -3
  76. data/spec/dummy/config/initializers/devise.rb +61 -40
  77. data/spec/dummy/config/initializers/high_voltage.rb +2 -0
  78. data/spec/dummy/config/initializers/rolify.rb +5 -2
  79. data/spec/dummy/config/routes.rb +6 -9
  80. data/spec/dummy/db/development.sqlite3 +0 -0
  81. data/spec/dummy/db/migrate/20170728171103_create_users_table.rb +2 -0
  82. data/spec/dummy/db/migrate/20170807134122_add_devise_to_users.rb +4 -3
  83. data/spec/dummy/db/migrate/20170807134128_rolify_create_roles.rb +6 -4
  84. data/spec/dummy/db/migrate/{20170808150915_create_calendars.date_book.rb → 20170808200808_create_calendars.date_book.rb} +3 -0
  85. data/spec/dummy/db/migrate/{20170808150916_create_events.date_book.rb → 20170808200809_create_events.date_book.rb} +3 -0
  86. data/spec/dummy/db/migrate/{20170808150917_create_schedules.date_book.rb → 20170808200810_create_schedules.date_book.rb} +9 -6
  87. data/spec/dummy/db/migrate/{20170808150918_add_fields_to_schedule.date_book.rb → 20170808200811_add_fields_to_schedule.date_book.rb} +3 -0
  88. data/spec/dummy/db/migrate/{20170808150919_create_event_occurrences.date_book.rb → 20170808200812_create_event_occurrences.date_book.rb} +4 -3
  89. data/spec/dummy/db/migrate/{20170808150920_add_fields_to_event_occurrences.date_book.rb → 20170808200813_add_fields_to_event_occurrences.date_book.rb} +3 -0
  90. data/spec/dummy/db/schema.rb +1 -1
  91. data/spec/dummy/db/seeds/calendars.seeds.rb +2 -1
  92. data/spec/dummy/db/seeds/events.seeds.rb +5 -5
  93. data/spec/dummy/db/seeds/users.seeds.rb +3 -1
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/lib/basic_benchmark.rb +2 -0
  96. data/spec/factories/calendars.rb +2 -0
  97. data/spec/factories/events.rb +2 -0
  98. data/spec/factories/roles.rb +2 -1
  99. data/spec/factories/users.rb +2 -0
  100. data/spec/features/calendars_spec.rb +47 -5
  101. data/spec/features/events_spec.rb +35 -9
  102. data/spec/helpers/date_book/application_helper_spec.rb +32 -0
  103. data/spec/helpers/date_book/events_helper_spec.rb +181 -13
  104. data/spec/models/calendar_spec.rb +3 -1
  105. data/spec/models/event_spec.rb +3 -1
  106. data/spec/models/role_spec.rb +1 -0
  107. data/spec/rails_helper.rb +6 -1
  108. data/spec/requests/date_book/api_spec.rb +76 -0
  109. data/spec/routing/date_book/calendars_routing_spec.rb +4 -2
  110. data/spec/routing/date_book/events_routing_spec.rb +48 -11
  111. data/spec/support/controller_behaviors.rb +2 -0
  112. data/spec/support/controller_macros.rb +3 -1
  113. data/spec/support/factory_girl.rb +2 -0
  114. data/spec/support/feature_behaviors.rb +9 -9
  115. data/spec/support/loaded_site.rb +2 -0
  116. data/spec/support/loaded_site/calendars.rb +2 -0
  117. data/spec/support/loaded_site/events.rb +3 -1
  118. data/spec/support/loaded_site/users.rb +2 -0
  119. data/spec/support/request_behaviors.rb +12 -63
  120. data/spec/support/shared_connection.rb +2 -0
  121. data/spec/support/utilities.rb +6 -5
  122. metadata +79 -42
  123. data/app/graphql/types/profile_type.rb +0 -7
  124. data/app/helpers/date_book/calendar_helper.rb +0 -4
  125. data/app/views/date_book/application/_all_day_checkbox.html.haml +0 -1
  126. data/bin/rails +0 -15
  127. data/spec/helpers/date_book/calendar_helper_spec.rb +0 -17
  128. data/spec/requests/date_book/events_spec.rb +0 -56
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Calendar model, used by DateBook to store groups of events
1
4
  class Calendar < ApplicationRecord
2
5
  acts_as_calendar
3
- end
6
+ end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Event model, used by DateBook to store events (recurring and not)
1
4
  class Event < ApplicationRecord
2
5
  acts_as_event
3
- end
6
+ end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # EventOccurrence model, used by DateBook to store times events occur
1
4
  class EventOccurrence < ApplicationRecord
2
5
  acts_as_event_occurrence
3
- end
6
+ end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Schedule model, used by DateBook to store event recurrence rules
1
4
  class Schedule < Schedulable::Model::Schedule
2
5
  acts_as_schedule
3
- end
6
+ end
@@ -19,7 +19,7 @@ describe 'Abilities on Events', folder: :abilities do
19
19
  it { should_not be_able_to(:create, Event) }
20
20
  end
21
21
  context 'when logged in as regular user' do
22
- let(:my_event) { science_fiction_club_event }
22
+ let(:my_event) { science_fiction_club }
23
23
  let(:other_event) { monday_event }
24
24
  let(:user) { regular_user }
25
25
  subject(:ability) { Ability.new(user) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_helper'
2
4
 
3
5
  module DateBook
@@ -7,16 +9,22 @@ module DateBook
7
9
  include_context 'loaded site'
8
10
  include ControllerMacros
9
11
 
10
- # This should return the minimal set of attributes required to create a valid
11
- # Calendar. As you add validations to Calendar, be sure to
12
- # adjust the attributes here as well.
13
- let(:valid_attributes) {
14
- { name: 'Test Calendar', schedule_attributes: { date: 1.hour.ago.to_date, time: 1.hour.ago} }
15
- }
12
+ # This should return the minimal set of attributes required to create a
13
+ # valid Calendar. As you add validations to Calendar, be sure to adjust the
14
+ # attributes here as well.
15
+ let(:valid_attributes) do
16
+ {
17
+ name: 'Test Calendar',
18
+ schedule_attributes: {
19
+ date: 1.hour.ago.to_date,
20
+ time: 1.hour.ago
21
+ }
22
+ }
23
+ end
16
24
 
17
- let(:invalid_attributes) {
25
+ let(:invalid_attributes) do
18
26
  { name: nil, schedule_attributes: nil }
19
- }
27
+ end
20
28
 
21
29
  describe 'GET #index' do
22
30
  before do
@@ -92,7 +100,6 @@ module DateBook
92
100
  end
93
101
  end
94
102
 
95
-
96
103
  describe 'POST #create' do
97
104
  describe 'when not logged in' do
98
105
  before do
@@ -121,7 +128,7 @@ module DateBook
121
128
  login_user regular_user
122
129
  end
123
130
  it 'results in a new calendar' do
124
- expect { post(:create, params: { calendar: valid_attributes }) }
131
+ expect { post(:create, params: { calendar: valid_attributes }) }
125
132
  .to change { Calendar.count(:id) }.by(1)
126
133
  end
127
134
  end
@@ -142,8 +149,8 @@ module DateBook
142
149
  login_user regular_user
143
150
  end
144
151
  it 'does not result in a new calendar' do
145
- expect { post(:create, params: { calendar: invalid_attributes }) }
146
- .to_not change { Calendar.count(:id) }
152
+ expect { post(:create, params: { calendar: invalid_attributes }) }
153
+ .to_not(change { Calendar.count(:id) })
147
154
  end
148
155
  end
149
156
  end
@@ -153,7 +160,13 @@ module DateBook
153
160
  describe 'when not logged in' do
154
161
  before do
155
162
  # Here's where we are *not* logging in
156
- put :update, params: { id: 'regular-calendar', calendar: valid_attributes }
163
+ put(
164
+ :update,
165
+ params: {
166
+ id: 'regular-calendar',
167
+ calendar: valid_attributes
168
+ }
169
+ )
157
170
  end
158
171
  it_should_behave_like 'a redirect to the home page'
159
172
  end
@@ -161,7 +174,13 @@ module DateBook
161
174
  describe 'as someone other than the owner' do
162
175
  before do
163
176
  login_user other_user
164
- put :update, params: { id: 'regular-calendar', calendar: valid_attributes }
177
+ put(
178
+ :update,
179
+ params: {
180
+ id: 'regular-calendar',
181
+ calendar: valid_attributes
182
+ }
183
+ )
165
184
  end
166
185
  it_should_behave_like 'a 403 Forbidden error'
167
186
  end
@@ -169,10 +188,19 @@ module DateBook
169
188
  describe 'with valid params' do
170
189
  before do
171
190
  login_user regular_user
172
- put :update, params: { id: 'regular-calendar', calendar: valid_attributes }
191
+ put(
192
+ :update,
193
+ params: {
194
+ id: 'regular-calendar',
195
+ calendar: valid_attributes
196
+ }
197
+ )
173
198
  end
174
199
  # Note that slug does not change
175
- it_should_behave_like 'a redirect to', '/date_book/calendars/regular-calendar'
200
+ it_should_behave_like(
201
+ 'a redirect to',
202
+ '/date_book/calendars/regular-calendar'
203
+ )
176
204
 
177
205
  describe 'updates @calendar' do
178
206
  subject { regular_calendar.reload }
@@ -189,9 +217,10 @@ module DateBook
189
217
  login_user regular_user
190
218
  put(
191
219
  :update, params: {
192
- id: 'regular-calendar',
193
- calendar: invalid_attributes
194
- })
220
+ id: 'regular-calendar',
221
+ calendar: invalid_attributes
222
+ }
223
+ )
195
224
  end
196
225
  it_should_behave_like 'a successful page', which_renders: 'edit'
197
226
 
@@ -254,6 +283,5 @@ module DateBook
254
283
  end
255
284
  end
256
285
  end
257
-
258
286
  end
259
287
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rails_helper'
2
4
 
3
5
  module DateBook
@@ -7,16 +9,19 @@ module DateBook
7
9
  include_context 'loaded site'
8
10
  include ControllerMacros
9
11
 
10
- # This should return the minimal set of attributes required to create a valid
11
- # Event. As you add validations to Event, be sure to
12
- # adjust the attributes here as well.
13
- let(:valid_attributes) {
14
- { name: 'Test Event', schedule_attributes: { date: 1.hour.ago.to_date, time: 1.hour.ago} }
15
- }
12
+ # This should return the minimal set of attributes required to create a
13
+ # valid Event. As you add validations to Event, be sure to adjust the
14
+ # attributes here as well.
15
+ let(:valid_attributes) do
16
+ {
17
+ name: 'Test Event',
18
+ schedule_attributes: { date: 1.hour.ago.to_date, time: 1.hour.ago }
19
+ }
20
+ end
16
21
 
17
- let(:invalid_attributes) {
22
+ let(:invalid_attributes) do
18
23
  { name: nil, schedule_attributes: nil }
19
- }
24
+ end
20
25
 
21
26
  describe 'GET #index' do
22
27
  describe 'without a query' do
@@ -33,7 +38,10 @@ module DateBook
33
38
  end
34
39
  describe 'with a query' do
35
40
  before do
36
- get :index, params: { start: Time.zone.now, calendar_id: 'admin-calendar' }
41
+ get(
42
+ :index,
43
+ params: { start: Time.zone.now, calendar_id: 'admin-calendar' }
44
+ )
37
45
  end
38
46
  it_should_behave_like 'a successful page', which_renders: 'index'
39
47
 
@@ -47,14 +55,20 @@ module DateBook
47
55
 
48
56
  describe 'GET #show' do
49
57
  before do
50
- get :show, params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
58
+ get(
59
+ :show,
60
+ params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
61
+ )
51
62
  end
52
63
  it_should_behave_like 'a successful page', which_renders: 'show'
53
64
  end
54
65
 
55
66
  describe 'GET #popover' do
56
67
  before do
57
- get :popover, params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
68
+ get(
69
+ :popover,
70
+ params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
71
+ )
58
72
  end
59
73
  it_should_behave_like 'a successful page', which_renders: 'popover'
60
74
  end
@@ -63,14 +77,14 @@ module DateBook
63
77
  describe 'when not logged in' do
64
78
  before do
65
79
  # Here's where we are *not* logging in
66
- get :new, params: { calendar_id: 'regular-calendar'}
80
+ get :new, params: { calendar_id: 'regular-calendar' }
67
81
  end
68
82
  it_should_behave_like 'a redirect to the home page'
69
83
  end
70
84
  describe 'when logged in' do
71
85
  before do
72
86
  login_user regular_user
73
- get :new, params: { calendar_id: 'regular-calendar'}
87
+ get :new, params: { calendar_id: 'regular-calendar' }
74
88
  end
75
89
  it_should_behave_like 'a successful page', which_renders: 'new'
76
90
 
@@ -86,7 +100,10 @@ module DateBook
86
100
  describe 'when not logged in' do
87
101
  before do
88
102
  # Here's where we are *not* logging in
89
- get :edit, params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
103
+ get(
104
+ :edit,
105
+ params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
106
+ )
90
107
  end
91
108
  it_should_behave_like 'a redirect to the home page'
92
109
  end
@@ -94,31 +111,42 @@ module DateBook
94
111
  describe 'as someone other than the owner' do
95
112
  before do
96
113
  login_user regular_user
97
- get :edit, params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
114
+ get(
115
+ :edit,
116
+ params: { id: 'the-work-week', calendar_id: 'admin-calendar' }
117
+ )
98
118
  end
99
119
  it_should_behave_like 'a 403 Forbidden error'
100
120
  end
101
121
  describe 'as the owner' do
102
122
  before do
103
123
  login_user regular_user
104
- get :edit, params: { id: 'science-fiction-club', calendar_id: 'regular-calendar' }
124
+ get(
125
+ :edit,
126
+ params: {
127
+ id: 'science-fiction-club',
128
+ calendar_id: 'regular-calendar'
129
+ }
130
+ )
105
131
  end
106
132
  it_should_behave_like 'a successful page', which_renders: 'edit'
107
133
 
108
134
  describe 'loads requested event into @event' do
109
135
  subject { assigns(:event) }
110
- it { should eq science_fiction_club_event }
136
+ it { should eq science_fiction_club }
111
137
  end
112
138
  end
113
139
  end
114
140
  end
115
141
 
116
-
117
142
  describe 'POST #create' do
118
143
  describe 'when not logged in' do
119
144
  before do
120
145
  # Here's where we are *not* logging in
121
- post :create, params: { event: valid_attributes, calendar_id: 'regular-calendar' }
146
+ post(
147
+ :create,
148
+ params: { event: valid_attributes, calendar_id: 'regular-calendar' }
149
+ )
122
150
  end
123
151
  it_should_behave_like 'a redirect to the home page'
124
152
  end
@@ -126,7 +154,13 @@ module DateBook
126
154
  describe 'with valid params' do
127
155
  before do
128
156
  login_user regular_user
129
- post :create, params: { event: valid_attributes, calendar_id: 'regular-calendar' }
157
+ post(
158
+ :create,
159
+ params: {
160
+ event: valid_attributes,
161
+ calendar_id: 'regular-calendar'
162
+ }
163
+ )
130
164
  end
131
165
  it_should_behave_like(
132
166
  'a redirect to',
@@ -142,14 +176,27 @@ module DateBook
142
176
  login_user regular_user
143
177
  end
144
178
  it 'results in a new event' do
145
- expect { post(:create, params: { event: valid_attributes, calendar_id: 'regular-calendar' }) }
146
- .to change { Event.count(:id) }.by(1)
179
+ expect do
180
+ post(
181
+ :create,
182
+ params: {
183
+ event: valid_attributes,
184
+ calendar_id: 'regular-calendar'
185
+ }
186
+ )
187
+ end.to change { Event.count(:id) }.by(1)
147
188
  end
148
189
  end
149
190
  describe 'with invalid params' do
150
191
  before do
151
192
  login_user regular_user
152
- post :create, params: { event: invalid_attributes, calendar_id: 'regular-calendar' }
193
+ post(
194
+ :create,
195
+ params: {
196
+ event: invalid_attributes,
197
+ calendar_id: 'regular-calendar'
198
+ }
199
+ )
153
200
  end
154
201
  it_should_behave_like 'a successful page', which_renders: 'new'
155
202
 
@@ -163,8 +210,15 @@ module DateBook
163
210
  login_user regular_user
164
211
  end
165
212
  it 'does not result in a new event' do
166
- expect { post(:create, params: { event: invalid_attributes, calendar_id: 'regular-calendar' }) }
167
- .to_not change { Event.count(:id) }
213
+ expect do
214
+ post(
215
+ :create,
216
+ params: {
217
+ event: invalid_attributes,
218
+ calendar_id: 'regular-calendar'
219
+ }
220
+ )
221
+ end.to_not(change { Event.count(:id) })
168
222
  end
169
223
  end
170
224
  end
@@ -174,7 +228,14 @@ module DateBook
174
228
  describe 'when not logged in' do
175
229
  before do
176
230
  # Here's where we are *not* logging in
177
- put :update, params: { id: 'science-fiction-club', event: valid_attributes, calendar_id: 'regular-calendar' }
231
+ put(
232
+ :update,
233
+ params: {
234
+ id: 'science-fiction-club',
235
+ event: valid_attributes,
236
+ calendar_id: 'regular-calendar'
237
+ }
238
+ )
178
239
  end
179
240
  it_should_behave_like 'a redirect to the home page'
180
241
  end
@@ -182,7 +243,14 @@ module DateBook
182
243
  describe 'as someone other than the owner' do
183
244
  before do
184
245
  login_user other_user
185
- put :update, params: { id: 'science-fiction-club', event: valid_attributes, calendar_id: 'regular-calendar' }
246
+ put(
247
+ :update,
248
+ params: {
249
+ id: 'science-fiction-club',
250
+ event: valid_attributes,
251
+ calendar_id: 'regular-calendar'
252
+ }
253
+ )
186
254
  end
187
255
  it_should_behave_like 'a 403 Forbidden error'
188
256
  end
@@ -190,13 +258,24 @@ module DateBook
190
258
  describe 'with valid params' do
191
259
  before do
192
260
  login_user regular_user
193
- put :update, params: { id: 'science-fiction-club', event: valid_attributes, calendar_id: 'regular-calendar' }
261
+ put(
262
+ :update,
263
+ params: {
264
+ id: 'science-fiction-club',
265
+ event: valid_attributes,
266
+ calendar_id: 'regular-calendar'
267
+ }
268
+ )
194
269
  end
195
270
  # Note that slug does not change
196
- it_should_behave_like 'a redirect to', '/date_book/calendars/regular-calendar/events/science-fiction-club'
271
+ it_should_behave_like(
272
+ 'a redirect to',
273
+ '/date_book/calendars/regular-calendar/events/'\
274
+ 'science-fiction-club'
275
+ )
197
276
 
198
277
  describe 'updates @event' do
199
- subject { science_fiction_club_event.reload }
278
+ subject { science_fiction_club.reload }
200
279
  its(:name) { should eq 'Test Event' }
201
280
  end
202
281
 
@@ -221,11 +300,11 @@ module DateBook
221
300
 
222
301
  describe 'loads the given event into @event' do
223
302
  subject { assigns(:event) }
224
- it { should eq science_fiction_club_event }
303
+ it { should eq science_fiction_club }
225
304
  end
226
305
 
227
306
  describe 'does not update @event' do
228
- subject { science_fiction_club_event.reload }
307
+ subject { science_fiction_club.reload }
229
308
  its(:name) { should eq 'Science Fiction Club' }
230
309
  end
231
310
 
@@ -242,7 +321,13 @@ module DateBook
242
321
  describe 'when not logged in' do
243
322
  before do
244
323
  # Here's where we are *not* logging in
245
- delete :destroy, params: { id: 'science-fiction-club', calendar_id: 'regular-calendar' }
324
+ delete(
325
+ :destroy,
326
+ params: {
327
+ id: 'science-fiction-club',
328
+ calendar_id: 'regular-calendar'
329
+ }
330
+ )
246
331
  end
247
332
  it_should_behave_like 'a redirect to the home page'
248
333
  end
@@ -250,17 +335,32 @@ module DateBook
250
335
  describe 'as someone other than the owner' do
251
336
  before do
252
337
  login_user other_user
253
- delete :destroy, params: { id: 'science-fiction-club', calendar_id: 'regular-calendar' }
338
+ delete(
339
+ :destroy,
340
+ params: {
341
+ id: 'science-fiction-club',
342
+ calendar_id: 'regular-calendar'
343
+ }
344
+ )
254
345
  end
255
346
  it_should_behave_like 'a 403 Forbidden error'
256
347
  end
257
348
  describe 'as the owner' do
258
349
  before do
259
350
  login_user regular_user
260
- delete :destroy, params: { id: 'science-fiction-club', calendar_id: 'regular-calendar' }
351
+ delete(
352
+ :destroy,
353
+ params: {
354
+ id: 'science-fiction-club',
355
+ calendar_id: 'regular-calendar'
356
+ }
357
+ )
261
358
  end
262
359
  # Note that slug does not change
263
- it_should_behave_like 'a redirect to', '/date_book/calendars/regular-calendar/events'
360
+ it_should_behave_like(
361
+ 'a redirect to',
362
+ '/date_book/calendars/regular-calendar/events'
363
+ )
264
364
 
265
365
  describe "sets the flash with a notice of the event's removal" do
266
366
  subject { flash[:notice] }
@@ -272,12 +372,18 @@ module DateBook
272
372
  login_user regular_user
273
373
  end
274
374
  it 'results one less event' do
275
- expect { delete(:destroy, params: { id: 'science-fiction-club', calendar_id: 'regular-calendar' }) }
276
- .to change { Event.count(:id) }.by(-1)
375
+ expect do
376
+ delete(
377
+ :destroy,
378
+ params: {
379
+ id: 'science-fiction-club',
380
+ calendar_id: 'regular-calendar'
381
+ }
382
+ )
383
+ end.to change { Event.count(:id) }.by(-1)
277
384
  end
278
385
  end
279
386
  end
280
387
  end
281
-
282
388
  end
283
389
  end