Merge branch 'hotfix/21.56.9' into master
[gitter.git] / modules / rooms / test / recent-room-core-test.js
blob8483098f6b754bbb32fa7b1d96f424085191bff0
1 'use strict';
3 var assert = require('assert');
4 var Promise = require('bluebird');
5 var fixtureLoader = require('gitter-web-test-utils/lib/test-fixtures');
6 var ObjectID = require('mongodb').ObjectID;
7 var recentRoomCore = require('../lib/recent-room-core');
9 describe('recent-room-core', function() {
10   describe('findLastAccessTimesForUsersInRoom #slow', function() {
11     var fixture = fixtureLoader.setup({
12       user1: {},
13       user2: {},
14       troupe1: { users: ['user1'] }
15     });
17     it('should handle default values', function() {
18       return recentRoomCore
19         .findLastAccessTimesForUsersInRoom(fixture.troupe1.id, [
20           fixture.user1.id,
21           fixture.user2._id
22         ])
23         .then(function(result) {
24           assert(result[fixture.user1.id]);
25           assert(result[fixture.user2.id]);
26         });
27     });
29     it('should handle non default values', function() {
30       return Promise.all([
31         recentRoomCore.saveUserTroupeLastAccess(fixture.user1.id, fixture.troupe1.id),
32         recentRoomCore.saveUserTroupeLastAccess(fixture.user2.id, fixture.troupe1.id)
33       ])
34         .then(function() {
35           return recentRoomCore.findLastAccessTimesForUsersInRoom(fixture.troupe1.id, [
36             fixture.user1.id,
37             fixture.user2._id
38           ]);
39         })
40         .then(function(result) {
41           var d1 = Date.now() - result[fixture.user1.id];
42           var d2 = Date.now() - result[fixture.user2.id];
43           assert(d1 >= 0);
44           assert(d1 < 5000);
46           assert(d2 >= 0);
47           assert(d2 < 5000);
48         });
49     });
50   });
52   describe('saveUserTroupeLastAccess #slow', function() {
53     it('should update on insert', function() {
54       var userId = new ObjectID();
55       var troupeId = new ObjectID();
56       return recentRoomCore.saveUserTroupeLastAccess(userId, troupeId).then(function(didUpdate) {
57         assert.strictEqual(didUpdate, true);
58       });
59     });
61     it('should update on update', function() {
62       var userId = new ObjectID();
63       var troupeId = new ObjectID();
64       var troupeId2 = new ObjectID();
65       return recentRoomCore
66         .saveUserTroupeLastAccess(userId, troupeId)
67         .then(function(didUpdate) {
68           assert.strictEqual(didUpdate, true);
69           return recentRoomCore.saveUserTroupeLastAccess(userId, troupeId2);
70         })
71         .then(function(didUpdate) {
72           assert.strictEqual(didUpdate, true);
73         });
74     });
76     it('should not update when the date is equal', function() {
77       var userId = new ObjectID();
78       var troupeId = new ObjectID();
79       var lastAccessTime = new Date();
80       var lastAccessTimeOld = new Date(lastAccessTime - 1000);
82       return recentRoomCore
83         .saveUserTroupeLastAccess(userId, troupeId, lastAccessTime)
84         .then(function(didUpdate) {
85           assert.strictEqual(didUpdate, true);
86           return recentRoomCore.saveUserTroupeLastAccess(userId, troupeId, lastAccessTimeOld);
87         })
88         .then(function(didUpdate) {
89           assert.strictEqual(didUpdate, false);
90         });
91     });
92   });
93 });