Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- it('should tick', fakeAsync(() => {
- const firstDate = new Date();
- tick(30000);
- const secondDate = new Date();
- expect(secondDate.getTime() - firstDate.getTime()).toBe(30000);
- }));
- export class UserTaskTrackerService {
- TaskExpired = new EventEmitter<UserTask>
- private activeUserTasks: UserTask[] = []
- private oneSecondTimer;
- private timerSubscription$;
- constructor() {
- this.oneSecondTimer = timer(1000, 1000);
- this.timerSubscription$ = this.oneSecondTimer.subscribe(() => {
- this.checkForExpiredUserTasks();
- });
- }
- addNewTask(task: UserTask) {
- if(this.taskExists(task)) {
- this.completeTask(task); // not included in example
- }
- else {
- task.startTime = new Date();
- this.activeUserTasks.push(task);
- }
- }
- private checkForExpiredUserTasks() {
- const currentTime = new Date();
- const expiredTasks: UserTask[] = [];
- this.activeUserTasks.forEach(userTask => {
- if (this.taskHasExpired(userTask.startTime, currentTime)) {
- expiredTasks.push(userTask);
- }
- });
- if (expiredTasks.length > 0) {
- this.handleExpiredTasks(expiredTasks);
- }
- }
- private taskHasExpired(taskStartTime: Date, currentTime: Date): boolean {
- return (currentTime.getTime() - taskStartTime.getTime()) / 1000 > 30;
- }
- private handleExpiredTasks(expiredTasks: UserTasks[]) {
- // remove task(s) from collection and then emit the task
- }
- }
- describe('User Action Tracking Service', () => {
- let service: UserTaskTrackerService;
- let testBed: TestBed;
- beforeEach(() => {
- TestBed.configureTestingModule({
- providers: [UserTaskTrackerService]
- });
- });
- beforeEach(() => {
- service = TestBed.get(UserTaskTrackerService);
- });
- it('should tick', fakeAsync(() => {
- const firstDate = new Date();
- tick(30000);
- const secondDate = new Date();
- expect(secondDate.getTime() - firstDate.getTime()).toBe(30000);
- }));
- // Other tests removed for brevity
- it(`it should emit a UserTask when one expires`, fakeAsync(() => {
- let expiredUserTask: UserTask;
- service.TaskExpired.subscribe((userTask: UserTask) => {
- expiredUserTask = userTask;
- });
- service.addNewTask(new UserTask('abc', 'test action - request'));
- expect(service.getTaskCount()).toBe(1);
- tick(3100);
- expect(expiredUserTask).toBeDefined();
- expect(expiredUserTask.id).toBe('abc');
- }));
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement