import { test, expect } from '../../../fixtures/base';

test.describe.serial(
	'Environment Feature Flags',
	{
		annotation: [{ type: 'owner', description: 'Adore' }],
	},
	() => {
		test('should set feature flags at runtime and load it back in envFeatureFlags from backend settings', async ({
			api,
		}) => {
			const setResponse = await api.setEnvFeatureFlags({
				N8N_ENV_FEAT_TEST: 'true',
			});

			expect(setResponse.data.success).toBe(true);
			expect(setResponse.data.message).toBe('Environment feature flags updated');

			expect(setResponse.data.flags).toBeInstanceOf(Object);
			expect(setResponse.data.flags['N8N_ENV_FEAT_TEST']).toBe('true');

			const currentFlags = await api.getEnvFeatureFlags();

			expect(currentFlags).toBeInstanceOf(Object);
			expect(currentFlags.data['N8N_ENV_FEAT_TEST']).toBe('true');
		});

		test('should reset feature flags at runtime', async ({ api }) => {
			const setResponse1 = await api.setEnvFeatureFlags({
				N8N_ENV_FEAT_TEST: 'true',
			});

			expect(setResponse1.data.success).toBe(true);
			expect(setResponse1.data.flags['N8N_ENV_FEAT_TEST']).toBe('true');

			const clearResponse = await api.clearEnvFeatureFlags();

			expect(clearResponse.data.success).toBe(true);

			expect(clearResponse.data.flags).toBeInstanceOf(Object);
			expect(clearResponse.data.flags['N8N_ENV_FEAT_TEST']).toBeUndefined();

			const currentFlags = await api.getEnvFeatureFlags();

			expect(currentFlags).toBeInstanceOf(Object);
			expect(currentFlags.data['N8N_ENV_FEAT_TEST']).toBeUndefined();
		});
	},
);
