mirror of https://github.com/vector-im/riot-web
92 lines
2.8 KiB
JavaScript
92 lines
2.8 KiB
JavaScript
/*
|
|
Copyright 2017 Vector Creations Ltd
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
const jest = require('jest-mock');
|
|
const React = require('react');
|
|
const ReactTestUtils = require('react-addons-test-utils');
|
|
const expect = require('expect');
|
|
|
|
const testUtils = require('test-utils');
|
|
|
|
const sdk = require('matrix-react-sdk');
|
|
const RegistrationForm = sdk.getComponent('views.auth.RegistrationForm');
|
|
|
|
const TEAM_CONFIG = {
|
|
supportEmail: "support@some.domain",
|
|
teams: [
|
|
{ name: "The Team Org.", domain: "team.ac.uk" },
|
|
{ name: "The Super Team", domain: "superteam.ac.uk" },
|
|
],
|
|
};
|
|
|
|
function doInputEmail(inputEmail, onTeamSelected) {
|
|
const res = ReactTestUtils.renderIntoDocument(
|
|
<RegistrationForm
|
|
teamsConfig={TEAM_CONFIG}
|
|
onTeamSelected={onTeamSelected}
|
|
flows={[
|
|
{
|
|
stages: ['m.login.dummy'],
|
|
},
|
|
]}
|
|
/>,
|
|
);
|
|
|
|
const teamInput = res.refs.email;
|
|
teamInput.value = inputEmail;
|
|
|
|
ReactTestUtils.Simulate.change(teamInput);
|
|
ReactTestUtils.Simulate.blur(teamInput);
|
|
|
|
return res;
|
|
}
|
|
|
|
function expectTeamSelectedFromEmailInput(inputEmail, expectedTeam) {
|
|
const onTeamSelected = jest.fn();
|
|
doInputEmail(inputEmail, onTeamSelected);
|
|
|
|
expect(onTeamSelected).toHaveBeenCalledWith(expectedTeam);
|
|
}
|
|
|
|
function expectSupportFromEmailInput(inputEmail, isSupportShown) {
|
|
const onTeamSelected = jest.fn();
|
|
const res = doInputEmail(inputEmail, onTeamSelected);
|
|
|
|
expect(res.state.showSupportEmail).toBe(isSupportShown);
|
|
}
|
|
|
|
describe('RegistrationForm', function() {
|
|
beforeEach(function() {
|
|
testUtils.beforeEach(this);
|
|
});
|
|
|
|
it('should select a team when a team email is entered', function() {
|
|
expectTeamSelectedFromEmailInput("member@team.ac.uk", TEAM_CONFIG.teams[0]);
|
|
});
|
|
|
|
it('should not select a team when an unrecognised team email is entered', function() {
|
|
expectTeamSelectedFromEmailInput("member@someunknownteam.ac.uk", null);
|
|
});
|
|
|
|
it('should show support when an unrecognised team email is entered', function() {
|
|
expectSupportFromEmailInput("member@someunknownteam.ac.uk", true);
|
|
});
|
|
|
|
it('should NOT show support when an unrecognised non-team email is entered', function() {
|
|
expectSupportFromEmailInput("someone@yahoo.com", false);
|
|
});
|
|
});
|