unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
153 lines • 5.26 kB
JavaScript
import NotFoundError from '../../lib/error/notfound-error.js';
export default class FakeProjectStore {
constructor() {
this.projects = [];
this.projectEnvironment = new Map();
}
getEnvironmentsForProject() {
throw new Error('Method not implemented.');
}
getProjectLinksForEnvironments(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_environments) {
throw new Error('Method not implemented.');
}
async addEnvironmentToProject(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
id,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
environment) {
const environments = this.projectEnvironment.get(id) || new Set();
environments.add(environment);
this.projectEnvironment.set(id, environments);
}
createInternal(project) {
const newProj = {
...project,
health: 100,
createdAt: new Date(),
mode: 'open',
defaultStickiness: 'default',
archivedAt: null,
};
this.projects.push(newProj);
return newProj;
}
async create(project) {
return this.createInternal(project);
}
async delete(key) {
this.projects.splice(this.projects.findIndex((project) => project.id === key), 1);
}
async deleteAll() {
this.projects = [];
}
async deleteEnvironmentForProject(id, environment) {
const environments = this.projectEnvironment.get(id);
if (environments) {
environments.delete(environment);
this.projectEnvironment.set(id, environments);
}
}
destroy() { }
async count() {
return this.projects.filter((project) => project.archivedAt === null)
.length;
}
async get(key) {
const project = this.projects.find((p) => p.id === key);
if (project) {
return project;
}
throw new NotFoundError(`Could not find project with id: ${key}`);
}
async getAll() {
return this.projects
.filter((project) => project.archivedAt === null)
.map((p) => p);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
async getMembersCountByProject(_projectId) {
return Promise.resolve(0);
}
async exists(key) {
return this.projects.some((project) => project.id === key);
}
async hasProject(id) {
return this.exists(id);
}
async hasActiveProject(id) {
return this.projects.some((project) => project.id === id && project.archivedAt === null);
}
async importProjects(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
projects,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_environments) {
return projects.map((project) => this.createInternal(project));
}
async update(update) {
await this.delete(update.id);
this.createInternal(update);
}
async updateHealth(healthUpdate) {
this.projects.find((project) => project.id === healthUpdate.id).health = healthUpdate.health;
}
addEnvironmentToProjects(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_environment,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_projects) {
throw new Error('Method not implemented.');
}
async getMembersCountByProjectAfterDate(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_projectId,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_date) {
return 0;
}
updateDefaultStrategy(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_projectId,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_environment,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_strategy) {
throw new Error('Method not implemented.');
}
getDefaultStrategy(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_projectId,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_environment) {
throw new Error('Method not implemented.');
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
isFeatureLimitReached(_id) {
return Promise.resolve(false);
}
async getProjectLinkTemplates(_id) {
return [];
}
getProjectModeCounts() {
return Promise.resolve([]);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
updateProjectEnterpriseSettings(_update) {
throw new Error('Method not implemented.');
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
getApplicationsByProject(_searchParams) {
throw new Error('Method not implemented.');
}
async archive(id) {
this.projects = this.projects.map((project) => project.id === id
? { ...project, archivedAt: new Date() }
: project);
}
async revive(id) {
this.projects = this.projects.map((project) => project.id === id ? { ...project, archivedAt: null } : project);
}
}
//# sourceMappingURL=fake-project-store.js.map