39
39
end
40
40
end
41
41
42
- end
42
+ describe "#create" do
43
+ let ( :team ) { Fabricate . build ( :team , name : 'team_name' ) }
44
+
45
+ before do
46
+ allow ( Team ) . to receive ( :with_similar_names ) . and_return ( [ ] )
47
+ end
48
+
49
+ context 'a team is selected from a list of similar teams' do
50
+ it 'renders a template with a choice of tariff plans when user picks a name from existing names' do
51
+ allow ( Team ) . to receive ( :where ) . and_return ( [ 'team_1' , 'team_2' ] )
52
+ post :create , :team => { selected : 'true' , slug : 'team_name' } , format : :js
53
+
54
+ expect ( assigns [ :team ] ) . to eq ( 'team_1' )
55
+ expect ( response ) . to render_template ( 'create' )
56
+ end
57
+
58
+ it 'renders a template with a choice of tariff plans if user picks his own team name' do
59
+ post :create , :team => { name : 'team_name' , selected : 'false' } , format : :js
60
+ expect ( response ) . to render_template ( 'create' )
61
+ end
62
+ end
63
+
64
+ context 'a team does not exist' do
65
+ let ( :response ) { post :create , :team => { name : 'team_name' } , format : :js }
66
+
67
+ before do
68
+ allow ( Team ) . to receive ( :new ) . and_return ( team )
69
+ allow ( team ) . to receive ( :save ) . and_return ( true )
70
+ allow ( team ) . to receive ( :add_user ) . and_return ( true )
71
+ end
72
+
73
+ it 'creates a new team' do
74
+ expect ( team ) . to receive ( :save )
75
+ response
76
+ end
77
+
78
+ it 'adds current user to the team' do
79
+ expect ( team ) . to receive ( :add_user ) . with ( current_user )
80
+ response
81
+ end
82
+
83
+ it 'records an event "created team"' do
84
+ expect ( controller ) . to receive ( :record_event ) . with ( 'created team' )
85
+ response
86
+ end
87
+
88
+ it 'renders template with option to join' do
89
+ expect ( response ) . to be_success
90
+ expect ( response ) . to render_template ( 'create' )
91
+ expect ( flash [ :notice ] ) . to eq ( "Successfully created a team team_name" )
92
+ end
93
+
94
+ it 'renders failure notice' do
95
+ allow ( team ) . to receive ( :save ) . and_return ( false )
96
+ response
97
+ expect ( flash [ :error ] ) . to eq ( "There was an error in creating a team team_name" )
98
+ end
99
+ end
100
+
101
+ context 'a team with similar name already exists' do
102
+ before do
103
+ allow ( Team ) . to receive ( :new ) . and_return ( team )
104
+ allow ( Team ) . to receive ( :with_similar_names ) . and_return ( [ team ] )
105
+ end
106
+
107
+ it 'renders a template with a list of similar teams' do
108
+ post :create , :team => { name : 'team_name' } , format : :js
109
+
110
+ expect ( assigns [ :new_team_name ] ) . to eq ( 'team_name' )
111
+ expect ( response ) . to render_template ( 'similar_teams' )
112
+ end
113
+ end
114
+ end
115
+
116
+ end
0 commit comments