feat(core): Add option to filter for empty variables (#12112)

This commit is contained in:
Danny Martini
2024-12-10 12:46:57 +01:00
committed by GitHub
parent 8bb0d3d823
commit a63f0e878e
5 changed files with 50 additions and 8 deletions

View File

@@ -4,6 +4,7 @@ import type { Variables } from '@/databases/entities/variables';
import { VariablesRepository } from '@/databases/repositories/variables.repository';
import { generateNanoId } from '@/databases/utils/generators';
import { VariablesService } from '@/environments/variables/variables.service.ee';
import { CacheService } from '@/services/cache/cache.service';
import { createOwner, createUser } from './shared/db/users';
import * as testDb from './shared/test-db';
@@ -65,19 +66,41 @@ beforeEach(async () => {
// ----------------------------------------
describe('GET /variables', () => {
beforeEach(async () => {
await Promise.all([createVariable('test1', 'value1'), createVariable('test2', 'value2')]);
await Promise.all([
createVariable('test1', 'value1'),
createVariable('test2', 'value2'),
createVariable('empty', ''),
]);
});
test('should return an empty array if there is nothing in the cache', async () => {
const cacheService = Container.get(CacheService);
const spy = jest.spyOn(cacheService, 'get').mockResolvedValueOnce(undefined);
const response = await authOwnerAgent.get('/variables');
expect(spy).toHaveBeenCalledTimes(1);
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(0);
});
test('should return all variables for an owner', async () => {
const response = await authOwnerAgent.get('/variables');
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(2);
expect(response.body.data.length).toBe(3);
});
test('should return all variables for a member', async () => {
const response = await authMemberAgent.get('/variables');
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(2);
expect(response.body.data.length).toBe(3);
});
describe('state:empty', () => {
test('only return empty variables', async () => {
const response = await authOwnerAgent.get('/variables').query({ state: 'empty' });
expect(response.statusCode).toBe(200);
expect(response.body.data.length).toBe(1);
expect(response.body.data[0]).toMatchObject({ key: 'empty', value: '', type: 'string' });
});
});
});