Browse Source

SONAR-10397 Test for buckets

tags/7.5
Pascal Mugnier 6 years ago
parent
commit
d39405a06b

+ 1
- 1
server/sonar-web/src/main/js/apps/code/bucket.ts View File

@@ -46,7 +46,7 @@ export function addComponentChildren(
): void {
const previous = getComponentChildren(componentKey);
if (previous) {
children = concat(children, previous.children);
children = concat(previous.children, children);
}
childrenBucket[componentKey] = { children, total, page };
}

+ 65
- 0
server/sonar-web/src/main/js/apps/code/components/__tests__/buckets-test.tsx View File

@@ -0,0 +1,65 @@
/*
* SonarQube
* Copyright (C) 2009-2018 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { concat } from 'lodash';
import { Component } from '../../types';
import {
addComponent,
getComponent,
addComponentChildren,
getComponentChildren
} from '../../bucket';

const component: Component = { key: 'frodo', name: 'frodo', qualifier: 'frodo' };

const componentKey: string = 'foo';
const childrenA: Component[] = [
{ key: 'foo', name: 'foo', qualifier: 'foo' },
{ key: 'bar', name: 'bar', qualifier: 'bar' }
];
const childrenB: Component[] = [
{ key: 'bart', name: 'bart', qualifier: 'bart' },
{ key: 'simpson', name: 'simpson', qualifier: 'simpson' }
];

it('Should have empty bucket at start', () => {
expect(getComponent(component.key)).toBeUndefined();
});

it('Should be able to store components in a bucket', () => {
addComponent(component);
expect(getComponent(component.key)).toEqual(component);
});

it('Should have empty children bucket at start', () => {
expect(getComponentChildren(componentKey)).toBeUndefined();
});

it('Should be able to store children components in a bucket', () => {
addComponentChildren(componentKey, childrenA, childrenA.length, 1);
expect(getComponentChildren(componentKey).children).toEqual(childrenA);
});

it('Should append new children components at the end of the bucket', () => {
addComponentChildren(componentKey, childrenB, 4, 2);
const finalBucket = getComponentChildren(componentKey);
expect(finalBucket.children).toEqual(concat(childrenA, childrenB));
expect(finalBucket.total).toBe(4);
expect(finalBucket.page).toBe(2);
});

+ 3
- 2
server/sonar-web/src/main/js/components/workspace/models/items.js View File

@@ -19,6 +19,7 @@
*/
import Backbone from 'backbone';
import Item from './item';
import { saveWorkspace, getWorkspace } from '../../../helpers/storage';

const STORAGE_KEY = 'sonarqube-workspace';

@@ -31,11 +32,11 @@ export default Backbone.Collection.extend({

save() {
const dump = JSON.stringify(this.toJSON());
window.localStorage.setItem(STORAGE_KEY, dump);
saveWorkspace(dump);
},

load() {
const dump = window.localStorage.getItem(STORAGE_KEY);
const dump = getWorkspace(STORAGE_KEY);
if (dump != null) {
try {
const parsed = JSON.parse(dump);

+ 10
- 0
server/sonar-web/src/main/js/helpers/storage.ts View File

@@ -28,6 +28,8 @@ const PROJECTS_SORT = 'sonarqube.projects.sort';
const PROJECT_ACTIVITY_GRAPH = 'sonarqube.project_activity.graph';
const PROJECT_ACTIVITY_GRAPH_CUSTOM = 'sonarqube.project_activity.graph.custom';

const WORKSPACE = 'sonarqube-workspace';

function save(key: string, value?: string): void {
try {
if (value) {
@@ -41,6 +43,14 @@ function save(key: string, value?: string): void {
}
}

export function saveWorkspace(dump: string): void {
window.localStorage.setItem(WORKSPACE, dump);
}

export function getWorkspace(): string | null {
return window.localStorage.getItem(WORKSPACE);
}

export function saveFavorite(): void {
save(PROJECTS_DEFAULT_FILTER, PROJECTS_FAVORITE);
}

Loading…
Cancel
Save