|
1 | 1 | RSpec.describe Workshop do |
2 | 2 | subject(:workshop) { Fabricate(:workshop) } |
3 | | - include_examples "Invitable", :workshop_invitation, :workshop |
| 3 | + |
| 4 | + include_examples 'Invitable', :workshop_invitation, :workshop |
4 | 5 | include_examples DateTimeConcerns, :workshop |
5 | 6 |
|
6 | 7 | context 'validates' do |
7 | 8 | it { is_expected.to validate_presence_of(:chapter_id) } |
8 | 9 |
|
9 | | - context "#date_and_time" do |
| 10 | + describe '#date_and_time' do |
10 | 11 | it 'does not validate if chapter_id blank' do |
11 | 12 | workshop.chapter_id = nil |
12 | 13 | workshop.date_and_time = nil |
|
22 | 23 | end |
23 | 24 | end |
24 | 25 |
|
25 | | - context '#end_at' do |
| 26 | + describe '#end_at' do |
26 | 27 | it 'does not validate if chapter_id blank' do |
27 | 28 | workshop.chapter_id = nil |
28 | 29 | workshop.ends_at = nil |
|
40 | 41 |
|
41 | 42 | context 'if virtual' do |
42 | 43 | before { allow(subject).to receive(:virtual?).and_return(true) } |
| 44 | + |
43 | 45 | it { is_expected.to validate_presence_of(:slack_channel) } |
44 | 46 | it { is_expected.to validate_presence_of(:slack_channel_link) } |
45 | 47 | it { is_expected.to validate_numericality_of(:student_spaces).is_greater_than(0) } |
|
63 | 65 | end |
64 | 66 |
|
65 | 67 | it 'retrieves the local time from the saved UTC value' do |
66 | | - workshop.update_attribute(:date_and_time, utc_time) |
| 68 | + workshop.assign_attributes(date_and_time: utc_time) |
| 69 | + workshop.save!(validate: false) |
67 | 70 |
|
68 | 71 | expect(workshop.date_and_time).to eq(pacific_time) |
69 | 72 | expect(workshop.date_and_time.zone).to eq('PDT') |
|
81 | 84 | end |
82 | 85 |
|
83 | 86 | it 'retrieves the local time from the saved UTC value' do |
84 | | - workshop.update_attribute(:rsvp_opens_at, utc_time) |
| 87 | + workshop.assign_attributes(rsvp_opens_at: utc_time) |
| 88 | + workshop.save!(validate: false) |
85 | 89 |
|
86 | 90 | expect(workshop.rsvp_opens_at).to eq(pacific_time) |
87 | 91 | expect(workshop.rsvp_opens_at.zone).to eq('PDT') |
88 | 92 | end |
89 | 93 | end |
90 | 94 | end |
91 | 95 |
|
92 | | - context '#rsvp_available?' do |
| 96 | + describe '#rsvp_available?' do |
93 | 97 | context 'rsvp is available' do |
94 | 98 | it 'when the event is in the future' do |
95 | 99 | workshop.date_and_time = 1.day.from_now |
|
119 | 123 | end |
120 | 124 | end |
121 | 125 |
|
122 | | - context '#to_s' do |
| 126 | + describe '#to_s' do |
123 | 127 | it 'when physical workshop' do |
124 | 128 | expect(workshop.to_s).to eq('Workshop') |
125 | 129 | end |
|
130 | 134 | end |
131 | 135 | end |
132 | 136 |
|
133 | | - context '#scopes' do |
| 137 | + describe '#scopes' do |
134 | 138 | describe '#host' do |
135 | 139 | it 'includes workshops with sponsored hosts' do |
136 | 140 | workshop_sponsor = Fabricate(:workshop_sponsor, host: true) |
|
189 | 193 | end |
190 | 194 | end |
191 | 195 |
|
192 | | - context '#invitable_yet?' do |
| 196 | + describe '#invitable_yet?' do |
193 | 197 | it 'is invitable if invitable set to true, no RSVP open time/date set' do |
194 | 198 | workshop = Fabricate.build(:workshop, invitable: true) |
195 | 199 | expect(workshop.invitable_yet?).to be true |
|
0 commit comments