aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/menu_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/api/menu_spec.lua')
-rw-r--r--test/functional/api/menu_spec.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/functional/api/menu_spec.lua b/test/functional/api/menu_spec.lua
new file mode 100644
index 0000000000..34d23ca098
--- /dev/null
+++ b/test/functional/api/menu_spec.lua
@@ -0,0 +1,52 @@
+local helpers = require('test.functional.helpers')
+local Screen = require('test.functional.ui.screen')
+
+local clear = helpers.clear
+local command = helpers.command
+local feed = helpers.feed
+
+describe("update_menu notification", function()
+
+ local screen
+
+ before_each(function()
+ clear()
+ screen = Screen.new()
+ screen:attach()
+ end)
+
+ after_each(function()
+ screen:detach()
+ end)
+
+ function expect_sent(expected)
+ screen:wait(function()
+ if screen.update_menu ~= expected then
+ if expected then
+ return 'update_menu was expected but not sent'
+ else
+ return 'update_menu was sent unexpectedly'
+ end
+ end
+ end)
+ end
+
+ it("should be sent when adding a menu", function()
+ command('menu Test.Test :')
+ expect_sent(true)
+ end)
+
+ it("should be sent when deleting a menu", function()
+ command('menu Test.Test :')
+ screen.update_menu = false
+
+ command('unmenu Test.Test')
+ expect_sent(true)
+ end)
+
+ it("should not be sent unnecessarily", function()
+ feed('i12345<ESC>:redraw<CR>')
+ expect_sent(false)
+ end)
+
+end)