-- 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)