File tree Expand file tree Collapse file tree 2 files changed +37
-1
lines changed
Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -3,4 +3,12 @@ class WorkshopSponsor < ApplicationRecord
33 belongs_to :workshop
44
55 validates :sponsor_id , uniqueness : { scope : :workshop_id , message : :already_sponsoring }
6+
7+ def set_as_host!
8+ update! ( host : true )
9+ end
10+
11+ def remove_as_host!
12+ update! ( host : false )
13+ end
614end
Original file line number Diff line number Diff line change 11RSpec . describe WorkshopSponsor do
22 context 'validates' do
33 it 'sponsor_id for uniqueness' do
4- is_expected . to validate_uniqueness_of ( :sponsor_id )
4+ expect ( subject ) . to validate_uniqueness_of ( :sponsor_id )
55 . scoped_to ( :workshop_id )
66 . with_message ( 'already a sponsor' )
77 end
88 end
9+
10+ describe '#set_as_host!' do
11+ let ( :workshop_sponsor ) { Fabricate ( :workshop_sponsor , host : false ) }
12+
13+ it 'sets host to true' do
14+ workshop_sponsor . set_as_host!
15+ expect ( workshop_sponsor . reload . host ) . to be true
16+ end
17+
18+ it 'raises RecordInvalid on validation failure' do
19+ allow ( workshop_sponsor ) . to receive ( :valid? ) . and_return ( false )
20+ expect { workshop_sponsor . set_as_host! } . to raise_error ( ActiveRecord ::RecordInvalid )
21+ end
22+ end
23+
24+ describe '#remove_as_host!' do
25+ let ( :workshop_sponsor ) { Fabricate ( :workshop_sponsor , host : true ) }
26+
27+ it 'sets host to false' do
28+ workshop_sponsor . remove_as_host!
29+ expect ( workshop_sponsor . reload . host ) . to be false
30+ end
31+
32+ it 'raises RecordInvalid on validation failure' do
33+ allow ( workshop_sponsor ) . to receive ( :valid? ) . and_return ( false )
34+ expect { workshop_sponsor . remove_as_host! } . to raise_error ( ActiveRecord ::RecordInvalid )
35+ end
36+ end
937end
You can’t perform that action at this time.
0 commit comments