Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RouteTest {
- data: Data;
- constructor(data: Data) {
- this.data = data;
- }
- }
- type Data = {
- [name: string]: any;
- };
- class UserTest {
- role: string;
- constructor(role: string) {
- this.role = role;
- }
- }
- const routeTest = new RouteTest({ roles: ['role1', 'role2'] });
- const userTest = new UserTest('role2');
- /* 1) Should succeed */
- if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
- {
- console.log('Success 1a');
- }
- else {
- console.log('Failure 1a');
- }
- if (userTest && routeTest?.data?.roles?.includes(userTest.role))
- {
- console.log('Success 1b (using optional chaining)');
- }
- else {
- console.log('Failure 1b (using optional chaining)');
- }
- userTest.role = 'role3';
- /* 2) User role is not in the routeTest.roles, should fail*/
- if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
- {
- console.log('Success 2a');
- }
- else {
- console.log('Failure 2a');
- }
- if (userTest && routeTest?.data?.roles?.includes(userTest.role))
- {
- console.log('Success 2b (using optional chaining)');
- }
- else {
- console.log('Failure 2b (using optional chaining)');
- }
- /* RouteTest.data.roles does not exist, should fail */
- routeTest.data = {notRoles: ['notRole1', 'notRole2']};
- if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
- {
- console.log('Success 3a');
- }
- else {
- console.log('Failure 3a');
- }
- if (userTest && routeTest?.data?.roles?.includes(userTest.role))
- {
- console.log('Success 3b (using optional chaining)');
- }
- else {
- console.log('Failure 3b (using optional chaining)');
- }
Add Comment
Please, Sign In to add comment