All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.app.shared.tools.array-utils.spec.ts Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2017-2023 Enedis
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { filterOnTextContent } from '@shared/tools';

describe('filterOnTextContent function...', () => {

    const undef = void 0;

    describe('should not explode (edges cases)...', () => {

        it('undefined everywhere',() => {
            expect(() => filterOnTextContent(undef, undef, undef)).not.toThrow();
        });

        it('empty object list',() => {
            expect(() => filterOnTextContent([], undef, undef)).not.toThrow();
        });
    });

    describe('with objects list...', () => {
        const objects = [
            { stringKey : 'one', numKey: 666 },
            { stringKey : 'two', numKey: 676 },
            { stringKey : 'three', numKey: 677 }
        ];

        describe('should not explode (edges cases)...', () => {

            it('undefined filter', () => {
                expect(() => filterOnTextContent(objects, undef, undef)).not.toThrow();
            });

            it('empty filter',() => {
                expect(() => filterOnTextContent(objects, '', undef)).not.toThrow();
            });

            it('with filter',() => {
                expect(() => filterOnTextContent(objects, 'filter', undef)).not.toThrow();
            });
        });

        it('should do nothing when no attributes given', () => {
            expect(filterOnTextContent(objects, 'o', [])).toEqual(objects);
        });

        it('should filter on string attribute', () => {
            const expectedFilteredObjects = [
                { stringKey : 'one', numKey: 666 },
                { stringKey : 'two', numKey: 676 }
            ];
            expect(filterOnTextContent(objects, 'o', ['stringKey']))
                .toEqual(expectedFilteredObjects);
        });

        it('should filter on number attribute', () => {
            const expectedFilteredObjects = [
                { stringKey : 'two', numKey: 676 },
                { stringKey : 'three', numKey: 677 }
            ];
            expect(filterOnTextContent(objects, '7', ['numKey']))
                .toEqual(expectedFilteredObjects);
        });
    });

});




© 2015 - 2024 Weber Informatics LLC | Privacy Policy