Gitter migration: Setup redirects (rollout pt. 3)
[gitter.git] / modules / backend-muxer / test / backend-muxer-test.js
blobc60834a7448915461b61de2480033a5426c479d7
1 'use strict';
3 var BackendMuxer = require('../lib/backend-muxer');
4 var assert = require('assert');
5 var Promise = require('bluebird');
7 describe('backend-muxer', function() {
8   describe('getFirstResultForBackends', function() {
9     var getFirstResultForBackends = BackendMuxer.testOnly.getFirstResultForBackends;
10     var backend1, backend2, results;
12     beforeEach(function() {
13       results = [];
14       backend1 = {
15         backendFn: function() {
16           return Promise.resolve(results[0]);
17         }
18       };
19       backend2 = {
20         backendFn: function() {
21           return Promise.resolve(results[1]);
22         }
23       };
24     });
26     it('should handle zero backends', function() {
27       var fn = getFirstResultForBackends('backendFn', []);
28       return fn([]).then(function(result) {
29         assert(!result);
30       });
31     });
33     it('should handle a single backends', function() {
34       var fn = getFirstResultForBackends('backendFn', []);
35       results[0] = 1;
36       return fn([backend1]).then(function(result) {
37         assert.strictEqual(result, 1);
38       });
39     });
41     it('should return the first backend if it returns a result', function() {
42       var fn = getFirstResultForBackends('backendFn', []);
43       results[0] = 1;
44       results[1] = 2;
45       return fn([backend1, backend2]).then(function(result) {
46         assert.strictEqual(result, 1);
47       });
48     });
50     it('should return the first second if the first does not return a result', function() {
51       var fn = getFirstResultForBackends('backendFn', []);
53       results[0] = 2;
54       return fn([backend1, backend2]).then(function(result) {
55         assert.strictEqual(result, 2);
56       });
57     });
59     it('should return nothing if no backends return a result', function() {
60       var fn = getFirstResultForBackends('backendFn', []);
62       return fn([backend1, backend2]).then(function(result) {
63         assert(!result);
64       });
65     });
66   });
68   describe('resolveUserBackends', function() {
69     it('should return an empty array for an anonymous user', function() {
70       var resolveUserBackends = BackendMuxer.testOnly.resolveUserBackends;
71       return resolveUserBackends(null).then(function(backends) {
72         assert.strictEqual(backends.length, 0);
73       });
74     });
75   });
76 });