@@ -813,15 +813,142 @@ def post_user
813813 end
814814 end
815815
816- describe '.invited' do
817-
818- let ( :user ) { Fabricate ( :user ) }
819-
816+ describe '#invited' do
820817 it 'returns success' do
818+ user = Fabricate ( :user )
819+
821820 xhr :get , :invited , username : user . username
822- response . should be_success
821+
822+ expect ( response ) . to be_success
823+ end
824+
825+ it 'filters by email' do
826+ inviter = Fabricate ( :user )
827+ invitee = Fabricate ( :user )
828+ invite = Fabricate (
829+ :invite ,
830+ email : 'billybob@example.com' ,
831+ invited_by : inviter ,
832+ user : invitee
833+ )
834+ Fabricate (
835+ :invite ,
836+ email : 'jimtom@example.com' ,
837+ invited_by : inviter ,
838+ user : invitee
839+ )
840+
841+ xhr :get , :invited , username : inviter . username , filter : 'billybob'
842+
843+ invites = JSON . parse ( response . body )
844+ expect ( invites ) . to have ( 1 ) . item
845+ expect ( invites . first ) . to include ( 'email' => 'billybob@example.com' )
846+ end
847+
848+ it 'filters by username' do
849+ inviter = Fabricate ( :user )
850+ invitee = Fabricate ( :user , username : 'billybob' )
851+ invite = Fabricate (
852+ :invite ,
853+ invited_by : inviter ,
854+ email : 'billybob@example.com' ,
855+ user : invitee
856+ )
857+ Fabricate (
858+ :invite ,
859+ invited_by : inviter ,
860+ user : Fabricate ( :user , username : 'jimtom' )
861+ )
862+
863+ xhr :get , :invited , username : inviter . username , filter : 'billybob'
864+
865+ invites = JSON . parse ( response . body )
866+ expect ( invites ) . to have ( 1 ) . item
867+ expect ( invites . first ) . to include ( 'email' => 'billybob@example.com' )
868+ end
869+
870+ context 'with guest' do
871+ context 'with pending invites' do
872+ it 'does not return invites' do
873+ inviter = Fabricate ( :user )
874+ Fabricate ( :invite , invited_by : inviter )
875+
876+ xhr :get , :invited , username : inviter . username
877+
878+ invites = JSON . parse ( response . body )
879+ expect ( invites ) . to be_empty
880+ end
881+ end
882+
883+ context 'with redeemed invites' do
884+ it 'returns invites' do
885+ inviter = Fabricate ( :user )
886+ invitee = Fabricate ( :user )
887+ invite = Fabricate ( :invite , invited_by : inviter , user : invitee )
888+
889+ xhr :get , :invited , username : inviter . username
890+
891+ invites = JSON . parse ( response . body )
892+ expect ( invites ) . to have ( 1 ) . item
893+ expect ( invites . first ) . to include ( 'email' => invite . email )
894+ end
895+ end
823896 end
824897
898+ context 'with authenticated user' do
899+ context 'with pending invites' do
900+ context 'with permission to see pending invites' do
901+ it 'returns invites' do
902+ user = log_in
903+ inviter = Fabricate ( :user )
904+ invite = Fabricate ( :invite , invited_by : inviter )
905+ stub_guardian ( user ) do |guardian |
906+ guardian . stubs ( :can_see_pending_invites_from? ) .
907+ with ( inviter ) . returns ( true )
908+ end
909+
910+ xhr :get , :invited , username : inviter . username
911+
912+ invites = JSON . parse ( response . body )
913+ expect ( invites ) . to have ( 1 ) . item
914+ expect ( invites . first ) . to include ( "email" => invite . email )
915+ end
916+ end
917+
918+ context 'without permission to see pending invites' do
919+ it 'does not return invites' do
920+ user = log_in
921+ inviter = Fabricate ( :user )
922+ invitee = Fabricate ( :user )
923+ Fabricate ( :invite , invited_by : inviter )
924+ stub_guardian ( user ) do |guardian |
925+ guardian . stubs ( :can_see_pending_invites_from? ) .
926+ with ( inviter ) . returns ( false )
927+ end
928+
929+ xhr :get , :invited , username : inviter . username
930+
931+ invites = JSON . parse ( response . body )
932+ expect ( invites ) . to be_empty
933+ end
934+ end
935+ end
936+
937+ context 'with redeemed invites' do
938+ it 'returns invites' do
939+ user = log_in
940+ inviter = Fabricate ( :user )
941+ invitee = Fabricate ( :user )
942+ invite = Fabricate ( :invite , invited_by : inviter , user : invitee )
943+
944+ xhr :get , :invited , username : inviter . username
945+
946+ invites = JSON . parse ( response . body )
947+ expect ( invites ) . to have ( 1 ) . item
948+ expect ( invites . first ) . to include ( 'email' => invite . email )
949+ end
950+ end
951+ end
825952 end
826953
827954 describe '#update' do
0 commit comments