@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.
53 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const faker_1 = require("@faker-js/faker");
const base_extended_1 = require("./base-extended");
class MockRepository extends base_extended_1.BaseSiteMock {
templates = {
github: [
['{{url}}/{{user}}/{{project}}', '{{user}}/{{project}}'],
['{{url}}/{{fakePath}}', '{{fakePath}}'],
],
gitlab: [
['{{url}}/{{user}}/{{project}}', '{{user}} / {{project}} · GitLab'],
['{{url}}/{{fakePath}}', '{{fakePath}} · GitLab'],
],
};
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))
?? faker_1.faker.helpers.arrayElement(providers);
}
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,
user,
project,
summary: faker_1.faker.lorem.sentence(),
})));
return {
provider,
user,
project,
url: this.isProviderSupported()
? `${this.domain.full}`
: `https://${provider}.${project}.${faker_1.faker.internet.domainSuffix()}}`,
templates,
isSupported: this.isProviderSupported(),
};
}
}
exports.default = MockRepository;
//# sourceMappingURL=repository.js.map