pgadmin4/web/regression/javascript/history/history_collection_spec.js
2021-01-04 15:34:45 +05:30

83 lines
2.4 KiB
JavaScript

/////////////////////////////////////////////////////////////
//
// pgAdmin 4 - PostgreSQL Tools
//
// Copyright (C) 2013 - 2021, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
import HistoryCollection from 'sources/sqleditor/history/history_collection';
describe('historyCollection', function () {
let historyCollection, historyModel, onAddSpy, onResetSpy;
beforeEach(() => {
historyModel = [{some: 'thing', someOther: ['array element']}];
historyCollection = new HistoryCollection(historyModel);
onAddSpy = jasmine.createSpy('onAddHandler');
onResetSpy = jasmine.createSpy('onResetHandler');
historyCollection.onAdd(onAddSpy);
historyCollection.onReset(onResetSpy);
});
describe('length', function () {
it('returns 0 when underlying history model has no elements', function () {
historyCollection = new HistoryCollection([]);
expect(historyCollection.length()).toEqual(0);
});
it('returns the length of the underlying history model', function () {
expect(historyCollection.length()).toEqual(1);
});
});
describe('add', function () {
let expectedHistory;
let newEntry = {some: 'new thing', someOther: ['value1', 'value2']};
beforeEach(() => {
historyCollection.add(newEntry);
expectedHistory = [
{some: 'new thing', someOther: ['value1', 'value2']},
{some: 'thing', someOther: ['array element']},
];
});
it('adds a passed entry', function () {
expect(historyCollection.historyList).toEqual(expectedHistory);
});
it('calls the onChange function', function () {
expect(onAddSpy).toHaveBeenCalledWith(newEntry);
});
});
describe('reset', function () {
beforeEach(() => {
historyCollection.reset();
});
it('drops the history', function () {
expect(historyCollection.historyList).toEqual([]);
expect(historyCollection.length()).toEqual(0);
});
it('calls the onReset function', function () {
expect(onResetSpy).toHaveBeenCalledWith([]);
});
});
describe('when instantiated', function () {
describe('from a history model', function () {
it('has the historyModel', () => {
let content = historyCollection.historyList;
expect(content).toEqual(historyModel);
});
});
});
});