diff --git a/client/__tests__/util/stateManager/controlsHelpers.test.js b/client/__tests__/util/stateManager/controlsHelpers.test.js index eed02a14..923d7f5a 100644 --- a/client/__tests__/util/stateManager/controlsHelpers.test.js +++ b/client/__tests__/util/stateManager/controlsHelpers.test.js @@ -4,11 +4,21 @@ test controls helpers import { subsetAndResetGeneLists } from "../../../src/util/stateManager/controlsHelpers"; import * as globals from "../../../src/globals"; + describe("controls helpers", () => { test("subsetAndResetGeneLists", () => { - const geneList = [...Array(150).keys()].map( - () => Math.random().toString(36).substring(2, 6) // random string of 4 characters - ); + const geneList = []; + const genRandGene = () => Math.random().toString(36).substring(2, 6); + + // build a unique set of genes + for (let i = 0; i < 150; i += 1) { + let randGene = genRandGene(); + while (geneList.includes(randGene)) randGene = genRandGene(); + geneList.push(randGene); + } + // insert duplicates + geneList[0] = "dupl"; + geneList[20] = "dupl"; const state = { userDefinedGenes: geneList.slice(0, 20), diffexpGenes: geneList.slice(20), @@ -16,12 +26,14 @@ describe("controls helpers", () => { const [newUserDefinedGenes, newDiffExpGenes] = subsetAndResetGeneLists( state ); + const expectedNewUserDefinedGenes = [ + ...geneList.slice(0, 20), + ...geneList.slice(21) + ].slice(0, globals.maxGenes); expect(globals.maxUserDefinedGenes).toBeLessThan(globals.maxGenes); expect(geneList.length).toBeGreaterThan(globals.maxGenes); expect(newUserDefinedGenes).toHaveLength(globals.maxGenes); - expect(newUserDefinedGenes).toStrictEqual( - geneList.slice(0, globals.maxGenes) - ); + expect(newUserDefinedGenes).toStrictEqual(expectedNewUserDefinedGenes); expect(newDiffExpGenes).toStrictEqual([]); }); }); diff --git a/client/src/util/stateManager/controlsHelpers.js b/client/src/util/stateManager/controlsHelpers.js index b88ab269..14e22f09 100644 --- a/client/src/util/stateManager/controlsHelpers.js +++ b/client/src/util/stateManager/controlsHelpers.js @@ -203,8 +203,7 @@ export function pruneVarDataCache(varData, needed) { export function subsetAndResetGeneLists(state) { const { userDefinedGenes, diffexpGenes } = state; - const newUserDefinedGenes = [] - .concat(userDefinedGenes, diffexpGenes) + const newUserDefinedGenes = _.uniq([].concat(userDefinedGenes, diffexpGenes)) .slice(0, globals.maxGenes); const newDiffExpGenes = []; return [newUserDefinedGenes, newDiffExpGenes];