mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const { test } = require('ava');
 | 
						|
const ClientMetricStore = require('./client-metrics-store');
 | 
						|
const lolex = require('lolex');
 | 
						|
 | 
						|
function getMockDb() {
 | 
						|
    const list = [
 | 
						|
        { id: 4, metrics: { appName: 'test' } },
 | 
						|
        { id: 3, metrics: { appName: 'test' } },
 | 
						|
        { id: 2, metrics: { appName: 'test' } },
 | 
						|
    ];
 | 
						|
    return {
 | 
						|
        getMetricsLastHour() {
 | 
						|
            return Promise.resolve([{ id: 1, metrics: { appName: 'test' } }]);
 | 
						|
        },
 | 
						|
 | 
						|
        getNewMetrics() {
 | 
						|
            return Promise.resolve([list.pop() || { id: 0 }]);
 | 
						|
        },
 | 
						|
    };
 | 
						|
}
 | 
						|
 | 
						|
test.cb('should call database on startup', t => {
 | 
						|
    const mock = getMockDb();
 | 
						|
 | 
						|
    const store = new ClientMetricStore(mock);
 | 
						|
 | 
						|
    t.plan(2);
 | 
						|
 | 
						|
    store.on('metrics', metrics => {
 | 
						|
        t.true(store.highestIdSeen === 1);
 | 
						|
        t.true(metrics.appName === 'test');
 | 
						|
        store.destroy();
 | 
						|
 | 
						|
        t.end();
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
test.cb('should poll for updates', t => {
 | 
						|
    const clock = lolex.install();
 | 
						|
 | 
						|
    const mock = getMockDb();
 | 
						|
    const store = new ClientMetricStore(mock, 100);
 | 
						|
 | 
						|
    const metrics = [];
 | 
						|
    store.on('metrics', m => metrics.push(m));
 | 
						|
 | 
						|
    t.true(metrics.length === 0);
 | 
						|
 | 
						|
    store.on('ready', () => {
 | 
						|
        t.true(metrics.length === 1);
 | 
						|
        clock.tick(300);
 | 
						|
        process.nextTick(() => {
 | 
						|
            t.true(metrics.length === 4);
 | 
						|
            t.true(store.highestIdSeen === 4);
 | 
						|
            store.destroy();
 | 
						|
            clock.uninstall();
 | 
						|
            t.end();
 | 
						|
        });
 | 
						|
    });
 | 
						|
});
 |