Skip to content

Commit

Permalink
Add tests on trackable attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
brichet committed Jul 5, 2023
1 parent a43945d commit 9324ea6
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions packages/widgets/tests/src/focustracker.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,22 @@ describe('@lumino/widgets', () => {
focusWidget(widget);
expect(emitArgs).to.equal(null);
});

it('should not be emitted when the focus widget is not tracked', () => {
let tracker = createTracker();
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
tracker.add(widget0);
tracker.add(widget1);
focusWidget(widget0);
let emitArgs: FocusTracker.IChangedArgs<Widget> | null = null;
tracker.currentChanged.connect((sender, args) => {
emitArgs = args;
});
focusWidget(widget1);
expect(emitArgs).to.equal(null);
});
});

describe('#activeChanged', () => {
Expand Down Expand Up @@ -143,6 +159,24 @@ describe('@lumino/widgets', () => {
expect(emitArgs!.oldValue).to.equal(widget);
expect(emitArgs!.newValue).to.equal(null);
});

it('should be emitted even if the focus widget is not tracked', () => {
let tracker = createTracker();
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
tracker.add(widget0);
tracker.add(widget1);
focusWidget(widget0);
let emitArgs: FocusTracker.IChangedArgs<Widget> | null = null;
tracker.activeChanged.connect((sender, args) => {
emitArgs = args;
});
focusWidget(widget1);
expect(emitArgs).to.not.equal(null);
expect(emitArgs!.oldValue).to.equal(widget0);
expect(emitArgs!.newValue).to.equal(null);
});
});

describe('#isDisposed', () => {
Expand Down Expand Up @@ -185,6 +219,19 @@ describe('@lumino/widgets', () => {
expect(tracker.currentWidget).to.equal(widget1);
});

it('should not be set to the non-trackable widget that gained focus', () => {
let tracker = createTracker();
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
focusWidget(widget0);
tracker.add(widget0);
tracker.add(widget1);
expect(tracker.currentWidget).to.equal(widget0);
focusWidget(widget1);
expect(tracker.currentWidget).to.equal(widget0);
});

it('should revert to the previous widget if the current widget is removed', () => {
let tracker = createTracker();
let widget0 = createWidget();
Expand All @@ -208,6 +255,20 @@ describe('@lumino/widgets', () => {
widget.dispose();
expect(tracker.currentWidget).to.equal(null);
});

it('should be `null` if the current widget is disposed', () => {
let tracker = createTracker();
expect(tracker.currentWidget).to.equal(null);
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
focusWidget(widget0);
tracker.add(widget0);
tracker.add(widget1);
expect(tracker.currentWidget).to.equal(widget0);
widget0.dispose();
expect(tracker.currentWidget).to.equal(null);
});
});

describe('#activeWidget', () => {
Expand All @@ -229,6 +290,18 @@ describe('@lumino/widgets', () => {
expect(tracker.activeWidget).to.equal(null);
});

it('should be set to `null` when an non-trackable widget gain focus', () => {
let tracker = createTracker();
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
focusWidget(widget0);
tracker.add(widget0);
expect(tracker.activeWidget).to.equal(widget0);
focusWidget(widget1);
expect(tracker.activeWidget).to.equal(null);
});

it('should be set to the widget that gained focus', () => {
let tracker = createTracker();
let widget0 = createWidget();
Expand All @@ -251,6 +324,20 @@ describe('@lumino/widgets', () => {
widget.dispose();
expect(tracker.activeWidget).to.equal(null);
});

it('should be `null` if the active widget is disposed', () => {
let tracker = createTracker();
expect(tracker.currentWidget).to.equal(null);
let widget0 = createWidget();
let widget1 = createWidget();
widget1.focusTrackable = false;
focusWidget(widget0);
tracker.add(widget0);
tracker.add(widget1);
expect(tracker.activeWidget).to.equal(widget0);
widget0.dispose();
expect(tracker.activeWidget).to.equal(null);
});
});

describe('#widgets', () => {
Expand Down Expand Up @@ -349,6 +436,14 @@ describe('@lumino/widgets', () => {
tracker.add(widget);
expect(tracker.has(widget)).to.equal(true);
});

it('should be a no-op if the widget is not trackable', () => {
let tracker = createTracker();
let widget = createWidget();
widget.focusTrackable = false;
tracker.add(widget);
expect(tracker.has(widget)).to.equal(false);
});
});

describe('#remove()', () => {
Expand Down

0 comments on commit 9324ea6

Please sign in to comment.