Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. it('should tick', fakeAsync(() => {
  2. const firstDate = new Date();
  3. tick(30000);
  4. const secondDate = new Date();
  5. expect(secondDate.getTime() - firstDate.getTime()).toBe(30000);
  6. }));
  7.  
  8. export class UserTaskTrackerService {
  9. TaskExpired = new EventEmitter<UserTask>
  10.  
  11. private activeUserTasks: UserTask[] = []
  12. private oneSecondTimer;
  13. private timerSubscription$;
  14.  
  15. constructor() {
  16. this.oneSecondTimer = timer(1000, 1000);
  17. this.timerSubscription$ = this.oneSecondTimer.subscribe(() => {
  18. this.checkForExpiredUserTasks();
  19. });
  20. }
  21.  
  22. addNewTask(task: UserTask) {
  23. if(this.taskExists(task)) {
  24. this.completeTask(task); // not included in example
  25. }
  26. else {
  27. task.startTime = new Date();
  28. this.activeUserTasks.push(task);
  29. }
  30. }
  31.  
  32. private checkForExpiredUserTasks() {
  33. const currentTime = new Date();
  34. const expiredTasks: UserTask[] = [];
  35.  
  36. this.activeUserTasks.forEach(userTask => {
  37. if (this.taskHasExpired(userTask.startTime, currentTime)) {
  38. expiredTasks.push(userTask);
  39. }
  40. });
  41.  
  42. if (expiredTasks.length > 0) {
  43. this.handleExpiredTasks(expiredTasks);
  44. }
  45. }
  46.  
  47. private taskHasExpired(taskStartTime: Date, currentTime: Date): boolean {
  48. return (currentTime.getTime() - taskStartTime.getTime()) / 1000 > 30;
  49. }
  50.  
  51. private handleExpiredTasks(expiredTasks: UserTasks[]) {
  52. // remove task(s) from collection and then emit the task
  53. }
  54. }
  55.  
  56. describe('User Action Tracking Service', () => {
  57. let service: UserTaskTrackerService;
  58. let testBed: TestBed;
  59.  
  60. beforeEach(() => {
  61. TestBed.configureTestingModule({
  62. providers: [UserTaskTrackerService]
  63. });
  64. });
  65.  
  66. beforeEach(() => {
  67. service = TestBed.get(UserTaskTrackerService);
  68. });
  69.  
  70. it('should tick', fakeAsync(() => {
  71. const firstDate = new Date();
  72. tick(30000);
  73. const secondDate = new Date();
  74. expect(secondDate.getTime() - firstDate.getTime()).toBe(30000);
  75. }));
  76.  
  77. // Other tests removed for brevity
  78.  
  79. it(`it should emit a UserTask when one expires`, fakeAsync(() => {
  80. let expiredUserTask: UserTask;
  81.  
  82. service.TaskExpired.subscribe((userTask: UserTask) => {
  83. expiredUserTask = userTask;
  84. });
  85.  
  86. service.addNewTask(new UserTask('abc', 'test action - request'));
  87. expect(service.getTaskCount()).toBe(1);
  88.  
  89. tick(3100);
  90.  
  91. expect(expiredUserTask).toBeDefined();
  92. expect(expiredUserTask.id).toBe('abc');
  93. }));
  94. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement