From f9b44555193220bd69f5ec7af25774bc55bc0d68 Mon Sep 17 00:00:00 2001 From: ivaosthu Date: Mon, 18 Dec 2017 14:31:59 +0100 Subject: [PATCH] Add unit tests for archived toggles --- lib/routes/admin-api/archive.test.js | 66 +++++++++++++++++++++- test/fixtures/fake-feature-toggle-store.js | 3 + 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/lib/routes/admin-api/archive.test.js b/lib/routes/admin-api/archive.test.js index f571a2d62a..89b5102596 100644 --- a/lib/routes/admin-api/archive.test.js +++ b/lib/routes/admin-api/archive.test.js @@ -1,5 +1,69 @@ 'use strict'; const { test } = require('ava'); +const store = require('./../../../test/fixtures/store'); +const supertest = require('supertest'); +const getApp = require('../../app'); -test.todo('should unit test archive'); +const { EventEmitter } = require('events'); +const eventBus = new EventEmitter(); + +function getSetup() { + const base = `/random${Math.round(Math.random() * 1000)}`; + const stores = store.createStores(); + const app = getApp({ + baseUriPath: base, + stores, + eventBus, + }); + + return { + base, + archiveStore: stores.featureToggleStore, + request: supertest(app), + }; +} + +test('should get empty getFeatures via admin', t => { + t.plan(1); + const { request, base } = getSetup(); + return request + .get(`${base}/api/admin/archive/features`) + .expect('Content-Type', /json/) + .expect(200) + .expect(res => { + t.true(res.body.features.length === 0); + }); +}); + +test('should get archived toggles via admin', t => { + t.plan(1); + const { request, base, archiveStore } = getSetup(); + archiveStore.addArchivedFeature({ + name: 'test1', + strategies: [{ name: 'default' }], + }); + archiveStore.addArchivedFeature({ + name: 'test2', + strategies: [{ name: 'default' }], + }); + return request + .get(`${base}/api/admin/archive/features`) + .expect('Content-Type', /json/) + .expect(200) + .expect(res => { + t.true(res.body.features.length === 2); + }); +}); + +test('should revive toggle', t => { + t.plan(0); + const name = 'name1'; + const { request, base, archiveStore } = getSetup(); + archiveStore.addArchivedFeature({ + name, + strategies: [{ name: 'default' }], + }); + + return request.post(`${base}/api/admin/archive/revive/${name}`).expect(200); +}); diff --git a/test/fixtures/fake-feature-toggle-store.js b/test/fixtures/fake-feature-toggle-store.js index 8e348efeb2..54aba77f1e 100644 --- a/test/fixtures/fake-feature-toggle-store.js +++ b/test/fixtures/fake-feature-toggle-store.js @@ -2,6 +2,7 @@ module.exports = () => { const _features = []; + const _archive = []; return { getFeature: name => { const toggle = _features.find(f => f.name === name); @@ -14,5 +15,7 @@ module.exports = () => { getFeatures: () => Promise.resolve(_features), hasFeatureName: () => Promise.resolve(false), addFeature: feature => _features.push(feature), + getArchivedFeatures: () => Promise.resolve(_archive), + addArchivedFeature: feature => _archive.push(feature), }; };