mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
124 lines
5.0 KiB
JavaScript
124 lines
5.0 KiB
JavaScript
"use strict";
|
|
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
class Testbed {
|
|
constructor(config) {
|
|
var _a, _b, _c, _d, _e;
|
|
this.config = {
|
|
globalLabels: (_a = config === null || config === void 0 ? void 0 : config.globalLabels) !== null && _a !== void 0 ? _a : [],
|
|
configs: (_b = config === null || config === void 0 ? void 0 : config.configs) !== null && _b !== void 0 ? _b : {},
|
|
writers: (_c = config === null || config === void 0 ? void 0 : config.writers) !== null && _c !== void 0 ? _c : [],
|
|
releasedCommits: (_d = config === null || config === void 0 ? void 0 : config.releasedCommits) !== null && _d !== void 0 ? _d : [],
|
|
queryRunner: (_e = config === null || config === void 0 ? void 0 : config.queryRunner) !== null && _e !== void 0 ? _e : async function* () {
|
|
yield [];
|
|
},
|
|
};
|
|
}
|
|
async *query(query) {
|
|
for await (const page of this.config.queryRunner(query)) {
|
|
yield page.map((issue) => issue instanceof TestbedIssue ? issue : new TestbedIssue(this.config, issue));
|
|
}
|
|
}
|
|
async createIssue(_owner, _repo, _title, _body) {
|
|
// pass...
|
|
}
|
|
async readConfig(path) {
|
|
return JSON.parse(JSON.stringify(this.config.configs[path]));
|
|
}
|
|
async hasWriteAccess(user) {
|
|
return this.config.writers.includes(user.name);
|
|
}
|
|
async repoHasLabel(label) {
|
|
return this.config.globalLabels.includes(label);
|
|
}
|
|
async createLabel(label, _color, _description) {
|
|
this.config.globalLabels.push(label);
|
|
}
|
|
async deleteLabel(labelToDelete) {
|
|
this.config.globalLabels = this.config.globalLabels.filter((label) => label !== labelToDelete);
|
|
}
|
|
async releaseContainsCommit(_release, commit) {
|
|
return this.config.releasedCommits.includes(commit);
|
|
}
|
|
}
|
|
exports.Testbed = Testbed;
|
|
class TestbedIssue extends Testbed {
|
|
constructor(globalConfig, issueConfig) {
|
|
var _a, _b, _c;
|
|
super(globalConfig);
|
|
issueConfig = issueConfig !== null && issueConfig !== void 0 ? issueConfig : {};
|
|
issueConfig.comments = (_a = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.comments) !== null && _a !== void 0 ? _a : [];
|
|
issueConfig.labels = (_b = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.labels) !== null && _b !== void 0 ? _b : [];
|
|
issueConfig.issue = {
|
|
author: { name: 'JacksonKearl' },
|
|
body: 'issue body',
|
|
locked: false,
|
|
numComments: ((_c = issueConfig === null || issueConfig === void 0 ? void 0 : issueConfig.comments) === null || _c === void 0 ? void 0 : _c.length) || 0,
|
|
number: 1,
|
|
open: true,
|
|
title: 'issue title',
|
|
assignee: undefined,
|
|
reactions: {
|
|
'+1': 0,
|
|
'-1': 0,
|
|
confused: 0,
|
|
eyes: 0,
|
|
heart: 0,
|
|
hooray: 0,
|
|
laugh: 0,
|
|
rocket: 0,
|
|
},
|
|
closedAt: undefined,
|
|
createdAt: +new Date(),
|
|
updatedAt: +new Date(),
|
|
...issueConfig.issue,
|
|
};
|
|
this.issueConfig = issueConfig;
|
|
}
|
|
async addAssignee(assignee) {
|
|
this.issueConfig.issue.assignee = assignee;
|
|
}
|
|
async setMilestone(milestoneId) {
|
|
this.issueConfig.issue.milestoneId = milestoneId;
|
|
}
|
|
async getIssue() {
|
|
const labels = [...this.issueConfig.labels];
|
|
return { ...this.issueConfig.issue, labels };
|
|
}
|
|
async postComment(body, author) {
|
|
this.issueConfig.comments.push({
|
|
author: { name: author !== null && author !== void 0 ? author : 'bot' },
|
|
body,
|
|
id: Math.random(),
|
|
timestamp: +new Date(),
|
|
});
|
|
}
|
|
async deleteComment(id) {
|
|
this.issueConfig.comments = this.issueConfig.comments.filter((comment) => comment.id !== id);
|
|
}
|
|
async *getComments(last) {
|
|
yield last
|
|
? [this.issueConfig.comments[this.issueConfig.comments.length - 1]]
|
|
: this.issueConfig.comments;
|
|
}
|
|
async addLabel(label) {
|
|
this.issueConfig.labels.push(label);
|
|
}
|
|
async removeLabel(labelToDelete) {
|
|
this.issueConfig.labels = this.issueConfig.labels.filter((label) => label !== labelToDelete);
|
|
}
|
|
async closeIssue() {
|
|
this.issueConfig.issue.open = false;
|
|
}
|
|
async lockIssue() {
|
|
this.issueConfig.issue.locked = true;
|
|
}
|
|
async getClosingInfo() {
|
|
return this.issueConfig.closingCommit;
|
|
}
|
|
}
|
|
exports.TestbedIssue = TestbedIssue;
|