clr-angular-static-fix
Version:
1. Install Clarity Icons package through npm:
109 lines (92 loc) • 3.39 kB
text/typescript
/*
* Copyright (c) 2016-2018 VMware, Inc. All Rights Reserved.
* This software is released under MIT license.
* The full license information can be found in LICENSE in the root directory of this project.
*/
import { Component, TemplateRef, ViewChild } from '@angular/core';
import { ClrDatagridColumn } from './datagrid-column';
import { DatagridHideableColumnModel } from './datagrid-hideable-column.model';
import { TestContext } from './helpers.spec';
import { DragDispatcher } from './providers/drag-dispatcher';
import { FiltersProvider } from './providers/filters';
import { Page } from './providers/page';
import { Sort } from './providers/sort';
import { StateDebouncer } from './providers/state-debouncer.provider';
import { DomAdapter } from './render/dom-adapter';
import { DatagridRenderOrganizer } from './render/render-organizer';
const PROVIDERS_NEEDED = [
Sort,
FiltersProvider,
DatagridRenderOrganizer,
DomAdapter,
DragDispatcher,
Page,
StateDebouncer,
];
export default function(): void {
describe('DatagridHideableColumnModel', function() {
let context: TestContext<ClrDatagridColumn, SimpleTest>;
let testDgHideableColumn: DatagridHideableColumnModel;
beforeEach(function() {
context = this.create(ClrDatagridColumn, SimpleTest, PROVIDERS_NEEDED);
testDgHideableColumn = new DatagridHideableColumnModel(
context.testComponent.templateRef,
context.testComponent.id,
context.testComponent.hidden
);
});
it('should have a template ref', function() {
expect(testDgHideableColumn.template).toBeDefined();
});
it('should have an id', function() {
expect(testDgHideableColumn.id).toBe('dg-col-0');
});
it('should have a hidden flag default to false', function() {
expect(testDgHideableColumn.hidden).toBeDefined();
expect(testDgHideableColumn.hidden).toBe(false);
});
it('should allow hidden flag to be set', function() {
testDgHideableColumn.hidden = true;
expect(testDgHideableColumn.hidden).toBe(true);
});
it('should provide an observable for the hidden changes', function() {
let changeValue: boolean;
let nbChanges: number = 0;
testDgHideableColumn.hiddenChangeState.subscribe(change => {
nbChanges++;
changeValue = change;
});
testDgHideableColumn.hidden = true;
expect(changeValue).toBe(true);
expect(nbChanges).toEqual(1);
testDgHideableColumn.hidden = false;
expect(changeValue).toBe(false);
expect(nbChanges).toEqual(2);
});
it('only updates hidden with a new value', function() {
let changeValue: boolean;
let nbChanges: number = 0;
testDgHideableColumn.hiddenChangeState.subscribe(change => {
nbChanges++;
changeValue = change;
});
testDgHideableColumn.hidden = false;
expect(changeValue).toBeUndefined();
expect(nbChanges).toBe(0);
});
});
}
@Component({
template: `
<!-- NOTE: The column is needed to make TestContext happy. TODO: Remove when TestContext is more flexible. -->
<clr-dg-column>Test Column</clr-dg-column>
<ng-template #testRef>
Hideable Column
</ng-template>
`,
})
class SimpleTest {
@ViewChild('testRef') templateRef: TemplateRef<any>;
id: string = 'dg-col-0';
hidden: boolean;
}