123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // Copyright (c) Jupyter Development Team.
- // Distributed under the terms of the Modified BSD License.
- import expect = require('expect.js');
- import {
- MimeData
- } from 'phosphor/lib/core/mimedata';
- import {
- BaseCellWidget
- } from '../../../lib/notebook/cells';
- import {
- NotebookPanel
- } from '../../../lib/notebook/notebook/panel';
- import {
- NotebookTracker
- } from '../../../lib/notebook/tracker';
- import {
- createNotebookContext, defaultRenderMime
- } from '../utils';
- import {
- DEFAULT_CONTENT, createNotebookPanelRenderer
- } from './utils';
- const NAMESPACE = 'notebook-tracker-test';
- class TestTracker extends NotebookTracker {
- methods: string[] = [];
- protected onCurrentChanged(): void {
- super.onCurrentChanged();
- this.methods.push('onCurrentChanged');
- }
- }
- /**
- * Default notebook panel data.
- */
- const rendermime = defaultRenderMime();
- const clipboard = new MimeData();
- const renderer = createNotebookPanelRenderer();
- describe('notebook/tracker', () => {
- describe('NotebookTracker', () => {
- describe('#constructor()', () => {
- it('should create a NotebookTracker', () => {
- let tracker = new NotebookTracker({ namespace: NAMESPACE });
- expect(tracker).to.be.a(NotebookTracker);
- });
- });
- describe('#activeCell', () => {
- it('should be `null` if there is no tracked notebook panel', () => {
- let tracker = new NotebookTracker({ namespace: NAMESPACE });
- expect(tracker.activeCell).to.be(null);
- });
- it('should be `null` if a tracked notebook has no active cell', () => {
- let tracker = new NotebookTracker({ namespace: NAMESPACE });
- let panel = new NotebookPanel({ rendermime, clipboard, renderer});
- tracker.add(panel);
- tracker.sync(panel);
- expect(tracker.activeCell).to.be(null);
- });
- it('should be the active cell if a tracked notebook has one', () => {
- let tracker = new NotebookTracker({ namespace: NAMESPACE });
- let panel = new NotebookPanel({ rendermime, clipboard, renderer});
- tracker.add(panel);
- tracker.sync(panel);
- panel.context = createNotebookContext();
- panel.content.model.fromJSON(DEFAULT_CONTENT);
- expect(tracker.activeCell).to.be.a(BaseCellWidget);
- panel.dispose();
- });
- });
- describe('#activeCellChanged', () => {
- it('should emit a signal when the active cell changes', () => {
- let tracker = new NotebookTracker({ namespace: NAMESPACE });
- let panel = new NotebookPanel({ rendermime, clipboard, renderer });
- let count = 0;
- tracker.activeCellChanged.connect(() => { count++; });
- panel.context = createNotebookContext();
- panel.content.model.fromJSON(DEFAULT_CONTENT);
- expect(count).to.be(0);
- tracker.add(panel);
- tracker.sync(panel);
- expect(count).to.be(1);
- panel.content.activeCellIndex = 1;
- expect(count).to.be(2);
- panel.dispose();
- });
- });
- describe('#onCurrentChanged()', () => {
- it('should be called when the active cell changes', () => {
- let tracker = new TestTracker({ namespace: NAMESPACE });
- let panel = new NotebookPanel({ rendermime, clipboard, renderer});
- tracker.add(panel);
- tracker.sync(panel);
- panel.context = createNotebookContext();
- panel.content.model.fromJSON(DEFAULT_CONTENT);
- expect(tracker.methods).to.contain('onCurrentChanged');
- panel.dispose();
- });
- });
- });
- });
|