Guest User

Untitled

a guest
May 13th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class RouteTest {
  2.   data: Data;
  3.  
  4.   constructor(data: Data) {
  5.     this.data = data;
  6.   }
  7. }
  8.  
  9. type Data = {
  10.   [name: string]: any;
  11. };
  12.  
  13. class UserTest {
  14.   role: string;
  15.  
  16.   constructor(role: string) {
  17.     this.role = role;
  18.   }
  19. }
  20.  
  21. const routeTest = new RouteTest({ roles: ['role1', 'role2'] });
  22. const userTest = new UserTest('role2');
  23.  
  24. /* 1) Should succeed */
  25. if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
  26. {
  27.   console.log('Success 1a');
  28. }
  29. else {
  30.   console.log('Failure 1a');
  31. }
  32. if (userTest && routeTest?.data?.roles?.includes(userTest.role))
  33. {
  34.   console.log('Success 1b (using optional chaining)');
  35. }
  36. else {
  37.   console.log('Failure 1b (using optional chaining)');
  38. }
  39.  
  40. userTest.role = 'role3';
  41. /* 2) User role is not in the routeTest.roles, should fail*/
  42. if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
  43. {
  44.   console.log('Success 2a');
  45. }
  46. else {
  47.   console.log('Failure 2a');
  48. }
  49. if (userTest && routeTest?.data?.roles?.includes(userTest.role))
  50. {
  51.   console.log('Success 2b (using optional chaining)');
  52. }
  53. else {
  54.   console.log('Failure 2b (using optional chaining)');
  55. }
  56.  
  57. /* RouteTest.data.roles does not exist, should fail */
  58. routeTest.data = {notRoles: ['notRole1', 'notRole2']};
  59. if (userTest && routeTest.data && routeTest.data.roles && routeTest.data.roles.includes(userTest.role))
  60. {
  61.   console.log('Success 3a');
  62. }
  63. else {
  64.   console.log('Failure 3a');
  65. }
  66. if (userTest && routeTest?.data?.roles?.includes(userTest.role))
  67. {
  68.   console.log('Success 3b (using optional chaining)');
  69. }
  70. else {
  71.   console.log('Failure 3b (using optional chaining)');
  72. }
Add Comment
Please, Sign In to add comment