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

test.describe(
	'Node Creator Vector Stores',
	{
		annotation: [{ type: 'owner', description: 'Adore' }],
	},
	() => {
		test.beforeEach(async ({ n8n }) => {
			await n8n.start.fromBlankCanvas();
			await n8n.canvas.addNode('Manual Trigger');
		});

		test('should show vector stores actions', async ({ n8n }) => {
			const expectedActions = [
				'Get ranked documents from vector store',
				'Add documents to vector store',
				'Retrieve documents for Chain/Tool as Vector Store',
				'Retrieve documents for AI Agent as Tool',
			];

			await n8n.canvas.clickNodePlusEndpoint(MANUAL_TRIGGER_NODE_DISPLAY_NAME);
			await n8n.canvas.nodeCreator.searchFor('Vector Store');

			await expect(n8n.canvas.nodeCreator.getNodeItems().first()).toBeVisible();

			await n8n.canvas.nodeCreator.getItem('Simple Vector Store').click();

			for (const action of expectedActions) {
				await expect(n8n.canvas.nodeCreator.getItem(action)).toBeVisible();
			}

			await n8n.canvas.nodeCreator.goBackFromSubcategory();
			await expect(n8n.canvas.nodeCreator.getNodeItems().first()).toBeVisible();
		});

		test('should find vector store nodes in creator', async ({ n8n }) => {
			await n8n.canvas.clickNodePlusEndpoint(MANUAL_TRIGGER_NODE_DISPLAY_NAME);
			await n8n.canvas.nodeCreator.searchFor('Vector Store');

			await expect(n8n.canvas.nodeCreator.getNodeItems().first()).toBeVisible();
		});

		test('should search for specific vector store nodes', async ({ n8n }) => {
			await n8n.canvas.clickNodePlusEndpoint(MANUAL_TRIGGER_NODE_DISPLAY_NAME);
			await n8n.canvas.nodeCreator.searchFor('Simple Vector Store');

			await expect(n8n.canvas.nodeCreator.getItem('Simple Vector Store')).toBeVisible();
		});
	},
);
