Refactor keybinding tests

There was an order-dependent test failure that plagued a couple of my
recent pull requests:

    Failure:
    Default_keybindings#test_keybinding_unset
      [/home/runner/work/gollum/gollum/test/test_app.rb:1098]
    Minitest::Assertion: Expected: true
      Actual: false

This commit ensures that `default_keybinding` is set to `nil` before
each test, and that the first line of each test changes the
configuration to the setting under test explicitly.

I also refactored the teardown to `nil` out all instance values so
they'll all certainly be reset when the next set of tests is run.
This commit is contained in:
benjamin wil
2022-09-04 15:31:01 -06:00
parent 395bf26a4b
commit 049db3eb69
+24 -15
View File
@@ -1082,59 +1082,68 @@ context "Default keybindings" do
include Rack::Test::Methods
setup do
@path = cloned_testpath("examples/empty.git")
@wiki = Gollum::Wiki.new(@path)
@path = cloned_testpath "examples/empty.git"
@wiki = Gollum::Wiki.new @path
@url = '/gollum/create/test'
Precious::App.set(:gollum_path, @path)
Precious::App.set :gollum_path, @path
Precious::App.set :wiki_options, {default_keybinding: nil}
end
teardown do
FileUtils.rm_rf(@path)
Precious::App.set(:wiki_options, {default_keybinding: nil})
FileUtils.rm_rf @path
@path = nil
@wiki = nil
@url = nil
end
test 'keybinding unset' do
get @url
assert_equal last_response.body.include?('selected="selected" value="default"'), false
assert_equal last_response.body.include?('selected="selected" value="vim"'), false
assert_equal last_response.body.include?('selected="selected" value="emacs"'), false
end
test 'keybinding `dne`' do
# dne := does not exist
Precious::App.set(:wiki_options, {:default_keybinding => 'dne'})
test 'nonexistent keybinding' do
Precious::App.set :wiki_options, {:default_keybinding => 'does-not-exist'}
get @url
assert_equal last_response.body.include?('selected="selected" value="default"'), false
assert_equal last_response.body.include?('selected="selected" value="vim"'), false
assert_equal last_response.body.include?('selected="selected" value="emacs"'), false
Precious::App.set(:wiki_options, {:default_keybinding => 'none'})
end
test 'keybinding `default`' do
Precious::App.set(:wiki_options, {:default_keybinding => 'default'})
Precious::App.set :wiki_options, {:default_keybinding => 'default'}
get @url
assert_equal last_response.body.include?('selected="selected" value="default"'), true
assert_equal last_response.body.include?('selected="selected" value="vim"'), false
assert_equal last_response.body.include?('selected="selected" value="emacs"'), false
Precious::App.set(:wiki_options, {:default_keybinding => 'none'})
end
test 'keybinding `vim`' do
Precious::App.set(:wiki_options, {:default_keybinding => 'vim'})
Precious::App.set :wiki_options, {:default_keybinding => 'vim'}
get @url
assert_equal last_response.body.include?('selected="selected" value="default"'), false
assert_equal last_response.body.include?('selected="selected" value="vim"'), true
assert_equal last_response.body.include?('selected="selected" value="emacs"'), false
Precious::App.set(:wiki_options, {:default_keybinding => 'none'})
end
test 'keybinding `emacs`' do
Precious::App.set(:wiki_options, {:default_keybinding => 'emacs'})
Precious::App.set :wiki_options, {:default_keybinding => 'emacs'}
get @url
assert_equal last_response.body.include?('selected="selected" value="default"'), false
assert_equal last_response.body.include?('selected="selected" value="vim"'), false
assert_equal last_response.body.include?('selected="selected" value="emacs"'), true
Precious::App.set(:wiki_options, {:default_keybinding => 'none'})
end
def app