mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-03 01:25:38 -05:00
Add arc tree data provider tests (#12758)
* Add arc tree data provider tests * Generic ResourceModel * no message * undo * Fix compile error
This commit is contained in:
@@ -135,10 +135,14 @@ export class AzureArcTreeDataProvider implements vscode.TreeDataProvider<TreeNod
|
||||
if (resourceNode) {
|
||||
await resourceNode.openDashboard();
|
||||
} else {
|
||||
console.log(`Couldn't find resource node for ${name} (${resourceType})`);
|
||||
const errMsg = `Couldn't find resource node for ${name} (${resourceType})`;
|
||||
console.log(errMsg);
|
||||
throw new Error(errMsg);
|
||||
}
|
||||
} else {
|
||||
console.log('Couldn\'t find controller node for opening dashboard');
|
||||
const errMsg = 'Couldn\'t find controller node for opening dashboard';
|
||||
console.log(errMsg);
|
||||
throw new Error(errMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import * as loc from '../../localizedConstants';
|
||||
import { ControllerModel, Registration } from '../../models/controllerModel';
|
||||
import { MiaaModel } from '../../models/miaaModel';
|
||||
import { PostgresModel } from '../../models/postgresModel';
|
||||
import { ResourceModel } from '../../models/resourceModel';
|
||||
import { ControllerDashboard } from '../dashboards/controller/controllerDashboard';
|
||||
import { AzureArcTreeDataProvider } from './azureArcTreeDataProvider';
|
||||
import { MiaaTreeNode } from './miaaTreeNode';
|
||||
@@ -24,7 +25,7 @@ import { TreeNode } from './treeNode';
|
||||
*/
|
||||
export class ControllerTreeNode extends TreeNode {
|
||||
|
||||
private _children: ResourceTreeNode[] = [];
|
||||
private _children: ResourceTreeNode<ResourceModel>[] = [];
|
||||
|
||||
constructor(public model: ControllerModel, private _context: vscode.ExtensionContext, private _treeDataProvider: AzureArcTreeDataProvider) {
|
||||
super(model.label, vscode.TreeItemCollapsibleState.Collapsed, ResourceType.dataControllers);
|
||||
@@ -69,14 +70,14 @@ export class ControllerTreeNode extends TreeNode {
|
||||
* @param resourceType The resourceType of the node
|
||||
* @param name The name of the node
|
||||
*/
|
||||
public getResourceNode(resourceType: string, name: string): ResourceTreeNode | undefined {
|
||||
public getResourceNode(resourceType: string, name: string): ResourceTreeNode<ResourceModel> | undefined {
|
||||
return this._children.find(c =>
|
||||
c.model?.info.resourceType === resourceType &&
|
||||
c.model.info.name === name);
|
||||
}
|
||||
|
||||
private updateChildren(registrations: Registration[]): void {
|
||||
const newChildren: ResourceTreeNode[] = [];
|
||||
const newChildren: ResourceTreeNode<ResourceModel>[] = [];
|
||||
registrations.forEach(registration => {
|
||||
if (!registration.instanceName) {
|
||||
console.warn('Registration is missing required name value, skipping');
|
||||
|
||||
@@ -8,15 +8,15 @@ import * as vscode from 'vscode';
|
||||
import { ControllerModel } from '../../models/controllerModel';
|
||||
import { MiaaModel } from '../../models/miaaModel';
|
||||
import { MiaaDashboard } from '../dashboards/miaa/miaaDashboard';
|
||||
import { TreeNode } from './treeNode';
|
||||
import { ResourceTreeNode } from './resourceTreeNode';
|
||||
|
||||
/**
|
||||
* The TreeNode for displaying a SQL Managed Instance on Azure Arc
|
||||
*/
|
||||
export class MiaaTreeNode extends TreeNode {
|
||||
export class MiaaTreeNode extends ResourceTreeNode<MiaaModel> {
|
||||
|
||||
constructor(public model: MiaaModel, private _controllerModel: ControllerModel) {
|
||||
super(model.info.name, vscode.TreeItemCollapsibleState.None, ResourceType.sqlManagedInstances);
|
||||
constructor(model: MiaaModel, private _controllerModel: ControllerModel) {
|
||||
super(model.info.name, vscode.TreeItemCollapsibleState.None, ResourceType.sqlManagedInstances, model);
|
||||
}
|
||||
|
||||
public async openDashboard(): Promise<void> {
|
||||
|
||||
@@ -13,14 +13,14 @@ import { ResourceTreeNode } from './resourceTreeNode';
|
||||
/**
|
||||
* The TreeNode for displaying an Postgres Server group
|
||||
*/
|
||||
export class PostgresTreeNode extends ResourceTreeNode {
|
||||
export class PostgresTreeNode extends ResourceTreeNode<PostgresModel> {
|
||||
|
||||
constructor(private _model: PostgresModel, private _controllerModel: ControllerModel, private _context: vscode.ExtensionContext) {
|
||||
super(_model.info.name, vscode.TreeItemCollapsibleState.None, ResourceType.postgresInstances, _model);
|
||||
constructor(model: PostgresModel, private _controllerModel: ControllerModel, private _context: vscode.ExtensionContext) {
|
||||
super(model.info.name, vscode.TreeItemCollapsibleState.None, ResourceType.postgresInstances, model);
|
||||
}
|
||||
|
||||
public async openDashboard(): Promise<void> {
|
||||
const postgresDashboard = new PostgresDashboard(this._context, this._controllerModel, this._model);
|
||||
const postgresDashboard = new PostgresDashboard(this._context, this._controllerModel, this.model);
|
||||
await postgresDashboard.showDashboard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import { TreeNode } from './treeNode';
|
||||
/**
|
||||
* A TreeNode belonging to a child of a Controller
|
||||
*/
|
||||
export abstract class ResourceTreeNode extends TreeNode {
|
||||
constructor(label: string, collapsibleState: vscode.TreeItemCollapsibleState, resourceType?: string, public model?: ResourceModel) {
|
||||
export abstract class ResourceTreeNode<M extends ResourceModel> extends TreeNode {
|
||||
constructor(label: string, collapsibleState: vscode.TreeItemCollapsibleState, resourceType: string, public model: M) {
|
||||
super(label, collapsibleState, resourceType);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user