@plq/faker
Version:
A set of classes for mocking known data types such as browser history, browser download list, persona, domain name, Jira project, GitHub repository, etc.
54 lines • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const faker_1 = require("@faker-js/faker");
const base_extended_1 = require("./base-extended");
class MockTracker extends base_extended_1.BaseSiteMock {
templates = {
jira: [
['{{url}}/browse/{{abbreviation}}-{{issueId}}', '{{abbreviation}}-{{issueId}} - {{summary}} - Atlassian Jira'],
['{{url}}/{{fakePath}}', '{{fakePath}} - Atlassian Jira'],
],
youtrack: [
['{{url}}/issue/{{abbreviation}}-{{issueId}}', '{{summary}}: YouTrack'],
['{{url}}/{{fakePath}}', '{{fakePath}}: YouTrack'],
],
};
constructor(query) {
super(query);
this.reset();
}
isProviderSupported() {
return Boolean(this.providers
.find(provider => this.domain.name.includes(provider)));
}
supportedProvider() {
const providers = this.providers;
return providers.find(provider => this.domain.name.includes(provider))
?? providers[Math.floor(Math.random() * providers.length)];
}
createMockItem() {
const provider = this.supportedProvider();
const user = this.user.nickname.toLowerCase();
const project = this.project.shortName.toLowerCase();
const templatesArray = this.templates[provider];
const templates = templatesArray.map(templates => templates.map(template => faker_1.faker.helpers.mustache(template, {
url: this.domain.full,
abbreviation: this.project.abbreviation,
issueId: faker_1.faker.string.numeric(5),
summary: faker_1.faker.lorem.sentence(),
})));
return {
provider,
user,
project,
path: `${user}/${project}`,
url: this.isProviderSupported()
? `${this.domain.full}/${user}/${project}`
: `https://${provider}.${faker_1.faker.internet.domainSuffix()}/${user}/${project}`,
templates,
isSupported: this.isProviderSupported(),
};
}
}
exports.default = MockTracker;
//# sourceMappingURL=tracker.js.map