-- plugins/neotest_config.lua
return {
	-- Load neotest
	{
		"nvim-neotest/neotest",
		dependencies = {
			-- For JavaScript, TypeScript (Vite)
			"marilari88/neotest-vitest",
			-- For Python
			"nvim-neotest/neotest-python",
			-- For C, C++, Rust
			"orjangj/neotest-ctest",
			"rouge8/neotest-rust",
		},
		config = function()
			local neotest = require("neotest")
			local keymap = vim.keymap.set

			-- General setup for neotest
			neotest.setup({
				adapters = {
					-- Vite Adapter for JavaScript/TypeScript
					require("neotest-vitest"),
					-- Python Adapter
					require("neotest-python"),
					-- C/C++ Adapter
					require("neotest-ctest"),
					-- Rust Adapter
					require("neotest-rust"),
				},
			})

			-- Keybinding Setup
			local opts = { noremap = true, silent = true }

			-- Run nearest test
            opts.desc = "Run nearest test"
			keymap("n", "<leader><leader>tr", '<cmd>lua require("neotest").run.run()<cr>', opts)

			-- Run all tests in the current file
            opts.desc = "Run all tests in current file"
			keymap("n", "<leader><leader>tf", '<cmd>lua require("neotest").run.run(vim.fn.expand("%"))', opts)

			-- Run all tests in the entire project
            opts.desc = "Run all tests in project"
			keymap("n", "<leader><leader>ta", "<cmd>Neotest run<cr>", opts)

			-- Stop running tests
            opts.desc = "Stop tests"
			keymap("n", "<leader><leader>ts", "<cmd>Neotest stop<cr>", opts)

            opts.desc = "Jump to next test"
			keymap("n", "<leader><leader>tn", "<cmd>Neotest jump next<cr>", opts)

            opts.desc = "Jump to previous test"
			keymap("n", "<leader><leader>tp", "<cmd>Neotest jump prev<cr>", opts)

			-- Show test summary
            opts.desc = "Show neotest test summary"
			keymap("n", "<leader><leader>tv", "<cmd>Neotest summary<cr>", opts)

			-- Toggle the Neotest panel
            opts.desc = "Show neotest output"
			keymap("n", "<leader><leader>to", "<cmd>Neotest output<cr>", opts)

            opts.desc = "Show neotest output as panel"
			keymap("n", "<leader><leader>tn", "<cmd>Neotest output-panel<cr>", opts)
		end,
	},
}