refactor notebook to be fileservice based (#6459)

This commit is contained in:
Anthony Dresser
2019-07-26 22:19:13 -07:00
committed by GitHub
parent 8e40aa3306
commit 371504358d
80 changed files with 192 additions and 175 deletions

View File

@@ -10,10 +10,10 @@ import { nb } from 'azdata';
import * as objects from 'vs/base/common/objects';
import { CellTypes } from 'sql/workbench/parts/notebook/common/models/contracts';
import { ModelFactory } from 'sql/workbench/parts/notebook/node/models/modelFactory';
import { ModelFactory } from 'sql/workbench/parts/notebook/common/models/modelFactory';
import { NotebookModelStub } from './common';
import { EmptyFuture } from 'sql/workbench/services/notebook/common/sessionManager';
import { ICellModel } from 'sql/workbench/parts/notebook/node/models/modelInterfaces';
import { ICellModel } from 'sql/workbench/parts/notebook/common/models/modelInterfaces';
import { Deferred } from 'sql/base/common/promise';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

View File

@@ -11,7 +11,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { URI } from 'vs/base/common/uri';
import { ClientSession } from 'sql/workbench/parts/notebook/node/models/clientSession';
import { ClientSession } from 'sql/workbench/parts/notebook/common/models/clientSession';
import { SessionManager, EmptySession } from 'sql/workbench/services/notebook/common/sessionManager';
import { NotebookManagerStub, ServerManagerStub } from './common';

View File

@@ -6,11 +6,11 @@
import { nb, IConnectionProfile } from 'azdata';
import { Event, Emitter } from 'vs/base/common/event';
import { INotebookModel, ICellModel, IClientSession, IDefaultConnection, NotebookContentChange } from 'sql/workbench/parts/notebook/node/models/modelInterfaces';
import { INotebookModel, ICellModel, IClientSession, IDefaultConnection, NotebookContentChange } from 'sql/workbench/parts/notebook/common/models/modelInterfaces';
import { NotebookChangeType, CellType } from 'sql/workbench/parts/notebook/common/models/contracts';
import { INotebookManager } from 'sql/workbench/services/notebook/common/notebookService';
import { ISingleNotebookEditOperation } from 'sql/workbench/api/common/sqlExtHostTypes';
import { IStandardKernelWithProvider } from 'sql/workbench/parts/notebook/node/models/notebookUtils';
import { IStandardKernelWithProvider } from 'sql/workbench/parts/notebook/common/models/notebookUtils';
export class NotebookModelStub implements INotebookModel {
constructor(private _languageInfo?: nb.ILanguageInfo) {

View File

@@ -5,12 +5,18 @@
import * as should from 'should';
import { nb } from 'azdata';
import * as typemoq from 'typemoq';
import { URI } from 'vs/base/common/uri';
import * as tempWrite from 'temp-write';
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
import { LocalContentManager } from 'sql/workbench/services/notebook/common/localContentManager';
import * as testUtils from '../../../../../../sqltest/utils/testUtils';
import { CellTypes } from 'sql/workbench/parts/notebook/common/models/contracts';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { TestFileService } from 'vs/workbench/test/workbenchTestServices';
import { IFileService, IReadFileOptions, IFileContent, IWriteFileOptions, IFileStatWithMetadata } from 'vs/platform/files/common/files';
import * as pfs from 'vs/base/node/pfs';
import { VSBuffer, VSBufferReadable } from 'vs/base/common/buffer';
let expectedNotebookContent: nb.INotebookContents = {
cells: [{
@@ -40,7 +46,23 @@ function verifyMatchesExpectedNotebook(notebook: nb.INotebookContents): void {
}
suite('Local Content Manager', function (): void {
let contentManager = new LocalContentManager();
let contentManager: LocalContentManager;
setup(() => {
const instantiationService = new TestInstantiationService();
const fileService = new class extends TestFileService {
async readFile(resource: URI, options?: IReadFileOptions | undefined): Promise<IFileContent> {
const content = await pfs.readFile(resource.fsPath);
return { name: ',', size: 0, etag: '', mtime: 0, value: VSBuffer.fromString(content.toString()), resource };
}
async writeFile(resource: URI, bufferOrReadable: VSBuffer | VSBufferReadable, options?: IWriteFileOptions): Promise<IFileStatWithMetadata> {
await pfs.writeFile(resource.fsPath, bufferOrReadable.toString());
return { resource: resource, mtime: 0, etag: '', size: 0, name: '', isDirectory: false };
}
};
instantiationService.set(IFileService, fileService);
contentManager = instantiationService.createInstance(LocalContentManager);
});
test('Should return undefined if path is undefined', async function (): Promise<void> {
let content = await contentManager.getNotebookContents(undefined);

View File

@@ -11,12 +11,12 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { URI } from 'vs/base/common/uri';
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
import { LocalContentManager } from 'sql/workbench/services/notebook/common/localContentManager';
import { NotebookManagerStub } from './common';
import { NotebookModel } from 'sql/workbench/parts/notebook/node/models/notebookModel';
import { ModelFactory } from 'sql/workbench/parts/notebook/node/models/modelFactory';
import { IClientSession, ICellModel, INotebookModelOptions, NotebookContentChange } from 'sql/workbench/parts/notebook/node/models/modelInterfaces';
import { ClientSession } from 'sql/workbench/parts/notebook/node/models/clientSession';
import { NotebookModel } from 'sql/workbench/parts/notebook/common/models/notebookModel';
import { ModelFactory } from 'sql/workbench/parts/notebook/common/models/modelFactory';
import { IClientSession, ICellModel, INotebookModelOptions, NotebookContentChange } from 'sql/workbench/parts/notebook/common/models/modelInterfaces';
import { ClientSession } from 'sql/workbench/parts/notebook/common/models/clientSession';
import { CellTypes, NotebookChangeType } from 'sql/workbench/parts/notebook/common/models/contracts';
import { Deferred } from 'sql/base/common/promise';
import { ConnectionManagementService } from 'sql/platform/connection/common/connectionManagementService';

View File

@@ -8,7 +8,7 @@ import { IConnectionProfile } from 'azdata';
import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
import { formatServerNameWithDatabaseNameForAttachTo, getServerFromFormattedAttachToName, getDatabaseFromFormattedAttachToName } from 'sql/workbench/parts/notebook/node/models/notebookUtils';
import { formatServerNameWithDatabaseNameForAttachTo, getServerFromFormattedAttachToName, getDatabaseFromFormattedAttachToName } from 'sql/workbench/parts/notebook/common/models/notebookUtils';
import { mssqlProviderName } from 'sql/platform/connection/common/constants';
suite('notebookUtils', function (): void {