mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-15 09:35:37 -05:00
Add dacpac references to sqlproj with relative path (#14877)
* relative paths written to sqlproj, but can't delete yet * only keep track of relative path * remove leading slash * add test * use path.relative * Add error message if dacpac reference is located on a different drive
This commit is contained in:
@@ -601,6 +601,62 @@ describe('ProjectsController', function (): void {
|
||||
should(showErrorMessageSpy.called).be.true('showErrorMessage should have been called');
|
||||
});
|
||||
|
||||
it('Should add dacpac references as relative paths', async function (): Promise<void> {
|
||||
const projFilePath = await testUtils.createTestSqlProjFile(baselines.newProjectFileBaseline);
|
||||
const projController = new ProjectsController();
|
||||
|
||||
const project1 = await Project.openProject(vscode.Uri.file(projFilePath).fsPath);
|
||||
const showErrorMessageSpy = sinon.spy(vscode.window, 'showErrorMessage');
|
||||
const dataWorkspaceMock = TypeMoq.Mock.ofType<dataworkspace.IExtension>();
|
||||
sinon.stub(vscode.extensions, 'getExtension').returns(<any>{ exports: dataWorkspaceMock.object });
|
||||
|
||||
// add dacpac reference to something in the same folder
|
||||
should(project1.databaseReferences.length).equal(0, 'There should not be any database references to start with');
|
||||
|
||||
await projController.addDatabaseReferenceCallback(project1, {
|
||||
databaseName: <string>this.databaseNameTextbox?.value,
|
||||
dacpacFileLocation: vscode.Uri.file(path.join(path.dirname(projFilePath), 'sameFolderTest.dacpac')),
|
||||
suppressMissingDependenciesErrors: false
|
||||
},
|
||||
{ treeDataProvider: new SqlDatabaseProjectTreeViewProvider(), element: undefined });
|
||||
should(showErrorMessageSpy.notCalled).be.true('showErrorMessage should not have been called');
|
||||
should(project1.databaseReferences.length).equal(1, 'Dacpac reference should have been added');
|
||||
should(project1.databaseReferences[0].databaseName).equal('sameFolderTest');
|
||||
should(project1.databaseReferences[0].pathForSqlProj()).equal('sameFolderTest.dacpac');
|
||||
// make sure reference to sameFolderTest.dacpac was added to project file
|
||||
let projFileText = (await fs.readFile(projFilePath)).toString();
|
||||
should(projFileText).containEql('sameFolderTest.dacpac');
|
||||
|
||||
// add dacpac reference to something in the a nested folder
|
||||
await projController.addDatabaseReferenceCallback(project1, {
|
||||
databaseName: <string>this.databaseNameTextbox?.value,
|
||||
dacpacFileLocation: vscode.Uri.file(path.join(path.dirname(projFilePath), 'refs', 'nestedFolderTest.dacpac')),
|
||||
suppressMissingDependenciesErrors: false
|
||||
},
|
||||
{ treeDataProvider: new SqlDatabaseProjectTreeViewProvider(), element: undefined });
|
||||
should(showErrorMessageSpy.notCalled).be.true('showErrorMessage should not have been called');
|
||||
should(project1.databaseReferences.length).equal(2, 'Another dacpac reference should have been added');
|
||||
should(project1.databaseReferences[1].databaseName).equal('nestedFolderTest');
|
||||
should(project1.databaseReferences[1].pathForSqlProj()).equal('refs\\nestedFolderTest.dacpac');
|
||||
// make sure reference to nestedFolderTest.dacpac was added to project file
|
||||
projFileText = (await fs.readFile(projFilePath)).toString();
|
||||
should(projFileText).containEql('refs\\nestedFolderTest.dacpac');
|
||||
|
||||
// add dacpac reference to something in the a folder outside of the project
|
||||
await projController.addDatabaseReferenceCallback(project1, {
|
||||
databaseName: <string>this.databaseNameTextbox?.value,
|
||||
dacpacFileLocation: vscode.Uri.file(path.join(path.dirname(projFilePath), '..','someFolder', 'outsideFolderTest.dacpac')),
|
||||
suppressMissingDependenciesErrors: false
|
||||
},
|
||||
{ treeDataProvider: new SqlDatabaseProjectTreeViewProvider(), element: undefined });
|
||||
should(showErrorMessageSpy.notCalled).be.true('showErrorMessage should not have been called');
|
||||
should(project1.databaseReferences.length).equal(3, 'Another dacpac reference should have been added');
|
||||
should(project1.databaseReferences[2].databaseName).equal('outsideFolderTest');
|
||||
should(project1.databaseReferences[2].pathForSqlProj()).equal('..\\someFolder\\outsideFolderTest.dacpac');
|
||||
// make sure reference to outsideFolderTest.dacpac was added to project file
|
||||
projFileText = (await fs.readFile(projFilePath)).toString();
|
||||
should(projFileText).containEql('..\\someFolder\\outsideFolderTest.dacpac');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user