diff options
Diffstat (limited to 'spec/frontend/invite_members/utils/response_message_parser_spec.js')
-rw-r--r-- | spec/frontend/invite_members/utils/response_message_parser_spec.js | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/spec/frontend/invite_members/utils/response_message_parser_spec.js b/spec/frontend/invite_members/utils/response_message_parser_spec.js index 3c88b5a2418..e2cc87c8547 100644 --- a/spec/frontend/invite_members/utils/response_message_parser_spec.js +++ b/spec/frontend/invite_members/utils/response_message_parser_spec.js @@ -2,18 +2,20 @@ import { responseMessageFromSuccess, responseMessageFromError, } from '~/invite_members/utils/response_message_parser'; +import { membersApiResponse, invitationsApiResponse } from '../mock_data/api_responses'; describe('Response message parser', () => { - const expectedMessage = 'expected display message'; + const expectedMessage = 'expected display and message.'; describe('parse message from successful response', () => { const exampleKeyedMsg = { 'email@example.com': expectedMessage }; + const exampleFirstPartMultiple = 'username1: expected display and message.'; const exampleUserMsgMultiple = - ' and username1: id not found and username2: email is restricted'; + ' and username2: id not found and restricted email. and username3: email is restricted.'; it.each([ [[{ data: { message: expectedMessage } }]], - [[{ data: { message: expectedMessage + exampleUserMsgMultiple } }]], + [[{ data: { message: exampleFirstPartMultiple + exampleUserMsgMultiple } }]], [[{ data: { error: expectedMessage } }]], [[{ data: { message: [expectedMessage] } }]], [[{ data: { message: exampleKeyedMsg } }]], @@ -33,4 +35,24 @@ describe('Response message parser', () => { expect(responseMessageFromError(errorResponse)).toBe(expectedMessage); }); }); + + describe('displaying only the first error when a response has messages for multiple users', () => { + const expected = + "The member's email address is not allowed for this project. Go to the Admin area > Sign-up restrictions, and check Allowed domains for sign-ups."; + + it.each([ + [[{ data: membersApiResponse.MULTIPLE_USERS_RESTRICTED }]], + [[{ data: invitationsApiResponse.MULTIPLE_EMAIL_RESTRICTED }]], + [[{ data: invitationsApiResponse.EMAIL_RESTRICTED }]], + ])(`returns "${expectedMessage}" from success response: %j`, (restrictedResponse) => { + expect(responseMessageFromSuccess(restrictedResponse)).toBe(expected); + }); + + it.each([[{ response: { data: membersApiResponse.SINGLE_USER_RESTRICTED } }]])( + `returns "${expectedMessage}" from error response: %j`, + (singleRestrictedResponse) => { + expect(responseMessageFromError(singleRestrictedResponse)).toBe(expected); + }, + ); + }); }); |