mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const { test } = require('ava');
 | |
| const ClientMetricStore = require('./client-metrics-store');
 | |
| const sinon = require('sinon');
 | |
| 
 | |
| 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 = sinon.useFakeTimers();
 | |
| 
 | |
|     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.restore();
 | |
|             t.end();
 | |
|         });
 | |
|     });
 | |
| });
 | |
| 
 |