mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-02 09:35:40 -05:00
Fixed a bug with deleting models from list in import model wizard (#12798)
This commit is contained in:
@@ -213,6 +213,7 @@ export const invalidModelImportTargetError = localize('models.invalidModelImport
|
||||
export const columnDataTypeMismatchWarning = localize('models.columnDataTypeMismatchWarning', "The data type of the source table column does not match the required input field’s type.");
|
||||
export const outputColumnDataTypeNotSupportedWarning = localize('models.outputColumnDataTypeNotSupportedWarning', "The data type of output column does not match the output field’s type.");
|
||||
export const modelNameRequiredError = localize('models.modelNameRequiredError', "Model name is required.");
|
||||
export const modelsRequiredError = localize('models.modelsRequiredError', "Please select at least one model to import.");
|
||||
export const updateModelFailedError = localize('models.updateModelFailedError', "Failed to update the model");
|
||||
export const modelSchemaIsAcceptedMessage = localize('models.modelSchemaIsAcceptedMessage', "Table meets requirements!");
|
||||
export const selectModelsTableMessage = localize('models.selectModelsTableMessage', "Select models table");
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import * as should from 'should';
|
||||
import 'mocha';
|
||||
import { createContext, ParentDialog } from './utils';
|
||||
import { ModelDetailsPage } from '../../../views/models/modelDetailsPage';
|
||||
|
||||
describe('Model Details Page', () => {
|
||||
it('Should create view components successfully ', async function (): Promise<void> {
|
||||
let testContext = createContext();
|
||||
let parent = new ParentDialog(testContext.apiWrapper.object);
|
||||
|
||||
let view = new ModelDetailsPage(testContext.apiWrapper.object, parent);
|
||||
view.registerComponent(testContext.view.modelBuilder);
|
||||
should.notEqual(view.component, undefined);
|
||||
});
|
||||
|
||||
it('Should load data successfully ', async function (): Promise<void> {
|
||||
let testContext = createContext();
|
||||
let parent = new ParentDialog(testContext.apiWrapper.object);
|
||||
|
||||
let view = new ModelDetailsPage(testContext.apiWrapper.object, parent);
|
||||
view.modelsViewData = [
|
||||
{
|
||||
modelData: 'motel1'
|
||||
}
|
||||
];
|
||||
view.registerComponent(testContext.view.modelBuilder);
|
||||
|
||||
await view.refresh();
|
||||
should.notEqual(view.data, undefined);
|
||||
should.equal(view.data?.length, 1);
|
||||
});
|
||||
|
||||
it('Should not validate the page if not model is selected ', async function (): Promise<void> {
|
||||
let testContext = createContext();
|
||||
let parent = new ParentDialog(testContext.apiWrapper.object);
|
||||
|
||||
let view = new ModelDetailsPage(testContext.apiWrapper.object, parent);
|
||||
view.modelsViewData = [
|
||||
];
|
||||
view.registerComponent(testContext.view.modelBuilder);
|
||||
|
||||
await view.refresh();
|
||||
await should(view.validate()).be.resolvedWith(false);
|
||||
});
|
||||
|
||||
it('Should not validate the page if model does not have name', async function (): Promise<void> {
|
||||
let testContext = createContext();
|
||||
let parent = new ParentDialog(testContext.apiWrapper.object);
|
||||
|
||||
let view = new ModelDetailsPage(testContext.apiWrapper.object, parent);
|
||||
view.modelsViewData = [
|
||||
{
|
||||
modelData: 'motel1',
|
||||
modelDetails: {
|
||||
modelName: ''
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
view.registerComponent(testContext.view.modelBuilder);
|
||||
|
||||
await view.refresh();
|
||||
await should(view.validate()).be.resolvedWith(false);
|
||||
});
|
||||
|
||||
it('Should validate the page if model is valid', async function (): Promise<void> {
|
||||
let testContext = createContext();
|
||||
let parent = new ParentDialog(testContext.apiWrapper.object);
|
||||
|
||||
let view = new ModelDetailsPage(testContext.apiWrapper.object, parent);
|
||||
view.modelsViewData = [
|
||||
{
|
||||
modelData: 'motel1',
|
||||
modelDetails: {
|
||||
modelName: 'name'
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
view.registerComponent(testContext.view.modelBuilder);
|
||||
|
||||
await view.refresh();
|
||||
await should(view.validate()).be.resolvedWith(true);
|
||||
});
|
||||
});
|
||||
@@ -73,7 +73,11 @@ export class ModelDetailsPage extends ModelViewBase implements IPageView, IDataC
|
||||
}
|
||||
|
||||
public validate(): Promise<boolean> {
|
||||
if (this.data && this.data.length > 0 && !this.data.find(x => !x.modelDetails?.modelName)) {
|
||||
if (!this.data || this.data.length === 0) {
|
||||
this.showErrorMessage(constants.modelsRequiredError);
|
||||
return Promise.resolve(false);
|
||||
}
|
||||
else if (this.data && this.data.length > 0 && !this.data.find(x => !x.modelDetails?.modelName)) {
|
||||
return Promise.resolve(true);
|
||||
} else {
|
||||
this.showErrorMessage(constants.modelNameRequiredError);
|
||||
|
||||
@@ -31,7 +31,7 @@ export class ModelsDetailsTableComponent extends ModelViewBase implements IDataC
|
||||
.withProperties<azdata.DeclarativeTableProperties>(
|
||||
{
|
||||
columns: [
|
||||
{ // Name
|
||||
{ // File Name
|
||||
displayName: constants.modelFileName,
|
||||
ariaLabel: constants.modelFileName,
|
||||
valueType: azdata.DeclarativeDataType.string,
|
||||
@@ -57,7 +57,7 @@ export class ModelsDetailsTableComponent extends ModelViewBase implements IDataC
|
||||
...constants.cssStyles.tableRow
|
||||
},
|
||||
},
|
||||
{ // Created
|
||||
{ // Description
|
||||
displayName: constants.modelDescription,
|
||||
ariaLabel: constants.modelDescription,
|
||||
valueType: azdata.DeclarativeDataType.component,
|
||||
@@ -121,6 +121,9 @@ export class ModelsDetailsTableComponent extends ModelViewBase implements IDataC
|
||||
let tableData: any[][] = [];
|
||||
tableData = tableData.concat(models.map(model => this.createTableRow(model)));
|
||||
this._table.data = tableData;
|
||||
if (tableData.length === 0) {
|
||||
this._table.dataValues = tableData;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user