-- Integration tests for complete workflows describe("cp.nvim integration", function() local cp local temp_dir before_each(function() cp = require("cp") temp_dir = vim.fn.tempname() vim.fn.mkdir(temp_dir, "p") vim.api.nvim_set_current_dir(temp_dir) -- Set up with minimal config cp.setup({ scrapers = {}, -- Disable scraping for integration tests contests = { codeforces = { dir = temp_dir, url = "mock://codeforces.com", languages = { cpp = { extension = "cpp", compile = "g++ -o %s %s" } } } } }) end) after_each(function() vim.fn.delete(temp_dir, "rf") vim.cmd("silent! %bwipeout!") end) describe("complete problem setup workflow", function() it("handles :CP codeforces 1800 A workflow", function() -- Test complete setup from command to file creation -- 1. Parse command -- 2. Set up directory structure -- 3. Create source file -- 4. Apply template -- 5. Switch to buffer end) it("handles CSES workflow", function() -- Test CSES-specific complete workflow end) it("handles language switching", function() -- Test switching languages for same problem end) end) describe("problem navigation workflow", function() it("navigates between problems in contest", function() -- Test :CP next/:CP prev workflow -- Requires cached contest metadata end) it("maintains state across navigation", function() -- Test that work isn't lost when switching problems end) end) describe("test panel workflow", function() it("handles complete testing workflow", function() -- 1. Set up problem -- 2. Write solution -- 3. Open test panel (:CP test) -- 4. Compile and run tests -- 5. View results -- 6. Close panel end) it("handles debug workflow", function() -- Test :CP test --debug workflow end) end) describe("file system integration", function() it("maintains proper directory structure", function() -- Test that files are organized correctly end) it("handles existing files appropriately", function() -- Test behavior when problem already exists end) it("cleans up temporary files", function() -- Test cleanup of build artifacts end) end) describe("error recovery", function() it("recovers from network failures gracefully", function() -- Test behavior when scraping fails end) it("recovers from compilation failures", function() -- Test error handling in compilation end) it("handles corrupted cache gracefully", function() -- Test cache corruption recovery end) end) describe("multi-session behavior", function() it("persists state across Neovim restarts", function() -- Test that contest/problem state persists end) it("handles concurrent usage", function() -- Test multiple Neovim instances end) end) end)