Merge branch 'hotfix/21.56.9' into master
[gitter.git] / modules / rooms / test / room-favourites-core-test.js
blobfd82a8ab16ce7789f1f6a7f7472dc206e53ce295
1 'use strict';
3 const assert = require('assert');
4 const fixtureLoader = require('gitter-web-test-utils/lib/test-fixtures');
5 const roomFavouritesCore = require('../lib/room-favourites-core');
7 describe('recent-room-core', function() {
8   describe('ordering #slow', function() {
9     var fixture = fixtureLoader.setup({
10       user1: {},
11       userNoTroupes: {},
12       troupe1: { users: ['user1'] },
13       troupe2: { users: ['user1'] },
14       troupe3: { users: ['user1'] },
15       troupe4: { users: ['user1'] }
16     });
18     it('should rearrange the order of favourites correctly', function() {
19       this.timeout(10000);
21       function getFavs() {
22         return roomFavouritesCore.findFavouriteTroupesForUser(fixture.user1.id);
23       }
25       return roomFavouritesCore
26         .updateFavourite(fixture.user1.id, fixture.troupe1.id, 1)
27         .then(getFavs)
28         .then(function(favs) {
29           assert.equal(favs[fixture.troupe1.id], 1);
30         })
31         .then(function() {
32           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe2.id, 1);
33         })
34         .then(getFavs)
35         .then(function(favs) {
36           assert.equal(favs[fixture.troupe1.id], 2);
37           assert.equal(favs[fixture.troupe2.id], 1);
38         })
39         .then(function() {
40           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe2.id, 3);
41         })
42         .then(getFavs)
43         .then(function(favs) {
44           assert.equal(favs[fixture.troupe1.id], 2);
45           assert.equal(favs[fixture.troupe2.id], 3);
46         })
47         .then(function() {
48           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe3.id, 1);
49         })
50         .then(getFavs)
51         .then(function(favs) {
52           assert.equal(favs[fixture.troupe3.id], 1);
53           assert.equal(favs[fixture.troupe1.id], 2);
54           assert.equal(favs[fixture.troupe2.id], 3);
55         })
56         .then(function() {
57           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe2.id, 2);
58         })
59         .then(getFavs)
60         .then(function(favs) {
61           assert.equal(favs[fixture.troupe3.id], 1);
62           assert.equal(favs[fixture.troupe2.id], 2);
63           assert.equal(favs[fixture.troupe1.id], 3);
64         })
65         .then(function() {
66           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe1.id, 4);
67         })
68         .then(getFavs)
69         .then(function(favs) {
70           assert.equal(favs[fixture.troupe3.id], 1);
71           assert.equal(favs[fixture.troupe2.id], 2);
72           assert.equal(favs[fixture.troupe1.id], 4);
73         })
74         .then(function() {
75           return roomFavouritesCore.updateFavourite(fixture.user1.id, fixture.troupe4.id, 1);
76         })
77         .then(getFavs)
78         .then(function(favs) {
79           assert.equal(favs[fixture.troupe4.id], 1);
80           assert.equal(favs[fixture.troupe3.id], 2);
81           assert.equal(favs[fixture.troupe2.id], 3);
82           assert.equal(favs[fixture.troupe1.id], 4);
83         });
84     });
85   });
87   describe('updateFavourite #slow', function() {
88     var fixture = fixtureLoader.setup({
89       user1: {},
90       troupe1: { users: ['user1'] }
91     });
93     it('should add a troupe to favourites', function() {
94       function fav(val) {
95         return roomFavouritesCore
96           .updateFavourite(fixture.user1.id, fixture.troupe1.id, val)
97           .then(function() {
98             return roomFavouritesCore.findFavouriteTroupesForUser(fixture.user1.id);
99           })
100           .then(function(favs) {
101             var isInTroupe = !!favs[fixture.troupe1.id];
102             assert(isInTroupe === val, 'Troupe should ' + (val ? '' : 'not ') + 'be a favourite');
103           });
104       }
106       return fav(true)
107         .then(() => fav(true))
108         .then(() => fav(false))
109         .then(() => fav(true));
110     });
111   });