local canola = require('canola') local test_util = require('spec.test_util') describe('canola select', function() after_each(function() test_util.reset_editor() end) it('opens file under cursor', function() test_util.canola_open() vim.cmd.normal({ args = { 'G' } }) test_util.await(canola.select, 2) assert.equals(1, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals('canola', vim.bo.filetype) end) it('opens file in new tab', function() test_util.canola_open() local tabpage = vim.api.nvim_get_current_tabpage() test_util.await(canola.select, 2, { tab = true }) assert.equals(2, #vim.api.nvim_list_tabpages()) assert.equals(1, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals(tabpage, vim.api.nvim_get_current_tabpage()) end) it('opens file in new split', function() test_util.canola_open() local winid = vim.api.nvim_get_current_win() test_util.await(canola.select, 2, { vertical = true }) assert.equals(1, #vim.api.nvim_list_tabpages()) assert.equals(2, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals(winid, vim.api.nvim_get_current_win()) end) it('opens multiple files in new tabs', function() test_util.canola_open() vim.api.nvim_feedkeys('Vj', 'x', true) local tabpage = vim.api.nvim_get_current_tabpage() test_util.await(canola.select, 2, { tab = true }) assert.equals(3, #vim.api.nvim_list_tabpages()) assert.equals(1, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals(tabpage, vim.api.nvim_get_current_tabpage()) end) it('opens multiple files in new splits', function() test_util.canola_open() vim.api.nvim_feedkeys('Vj', 'x', true) local winid = vim.api.nvim_get_current_win() test_util.await(canola.select, 2, { vertical = true }) assert.equals(1, #vim.api.nvim_list_tabpages()) assert.equals(3, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals(winid, vim.api.nvim_get_current_win()) end) describe('close after open', function() it('same window', function() vim.cmd.edit({ args = { 'foo' } }) local bufnr = vim.api.nvim_get_current_buf() test_util.canola_open() vim.cmd.normal({ args = { 'G' } }) test_util.await(canola.select, 2, { close = true }) assert.equals(1, #vim.api.nvim_tabpage_list_wins(0)) assert.not_equals(bufnr, vim.api.nvim_get_current_buf()) assert.not_equals('canola', vim.bo.filetype) end) it('split', function() vim.cmd.edit({ args = { 'foo' } }) local bufnr = vim.api.nvim_get_current_buf() local winid = vim.api.nvim_get_current_win() test_util.canola_open() test_util.await(canola.select, 2, { vertical = true, close = true }) assert.equals(2, #vim.api.nvim_tabpage_list_wins(0)) assert.equals(bufnr, vim.api.nvim_win_get_buf(winid)) end) it('tab', function() vim.cmd.edit({ args = { 'foo' } }) local bufnr = vim.api.nvim_get_current_buf() local tabpage = vim.api.nvim_get_current_tabpage() test_util.canola_open() test_util.await(canola.select, 2, { tab = true, close = true }) assert.equals(1, #vim.api.nvim_tabpage_list_wins(0)) assert.equals(2, #vim.api.nvim_list_tabpages()) vim.api.nvim_set_current_tabpage(tabpage) assert.equals(bufnr, vim.api.nvim_get_current_buf()) end) end) end)