diff options
| author | Stephen Blott | 2015-06-20 06:15:45 +0100 | 
|---|---|---|
| committer | Stephen Blott | 2015-06-20 07:00:24 +0100 | 
| commit | 1e671e28fd1f348b17ee16351c1a0b03f9d15e4f (patch) | |
| tree | f8f8b21e2c57a1aac998383f2e52cda10c080ba8 | |
| parent | 21a5405e9b12201ed96c7de93d94410a3d448979 (diff) | |
| download | vimium-1e671e28fd1f348b17ee16351c1a0b03f9d15e4f.tar.bz2 | |
Add test that every option has a default value.
This prevents issues like #1731 and is an (better) alternative to #1732.
| -rw-r--r-- | pages/options.coffee | 41 | ||||
| -rw-r--r-- | tests/unit_tests/completion_test.coffee | 3 | ||||
| -rw-r--r-- | tests/unit_tests/settings_test.coffee | 8 | ||||
| -rw-r--r-- | tests/unit_tests/test_chrome_stubs.coffee | 5 | 
4 files changed, 35 insertions, 22 deletions
| diff --git a/pages/options.coffee b/pages/options.coffee index 88acbf51..1cbe88fa 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -181,6 +181,24 @@ class ExclusionRulesOnPopupOption extends ExclusionRulesOption      else        @url + "*" +Options = +  exclusionRules: ExclusionRulesOption +  filterLinkHints: CheckBoxOption +  hideHud: CheckBoxOption +  keyMappings: TextOption +  linkHintCharacters: NonEmptyTextOption +  linkHintNumbers: NonEmptyTextOption +  newTabUrl: NonEmptyTextOption +  nextPatterns: NonEmptyTextOption +  previousPatterns: NonEmptyTextOption +  regexFindMode: CheckBoxOption +  scrollStepSize: NumberOption +  smoothScroll: CheckBoxOption +  grabBackFocus: CheckBoxOption +  searchEngines: TextOption +  searchUrl: NonEmptyTextOption +  userDefinedLinkHintCss: TextOption +  initOptionsPage = ->    onUpdated = ->      $("saveOptions").removeAttribute "disabled" @@ -238,26 +256,8 @@ initOptionsPage = ->        document.activeElement.blur() if document?.activeElement?.blur        saveOptions() -  options = -    exclusionRules: ExclusionRulesOption -    filterLinkHints: CheckBoxOption -    hideHud: CheckBoxOption -    keyMappings: TextOption -    linkHintCharacters: NonEmptyTextOption -    linkHintNumbers: NonEmptyTextOption -    newTabUrl: NonEmptyTextOption -    nextPatterns: NonEmptyTextOption -    previousPatterns: NonEmptyTextOption -    regexFindMode: CheckBoxOption -    scrollStepSize: NumberOption -    smoothScroll: CheckBoxOption -    grabBackFocus: CheckBoxOption -    searchEngines: TextOption -    searchUrl: NonEmptyTextOption -    userDefinedLinkHintCss: TextOption -    # Populate options. The constructor adds each new object to "Option.all". -  for name, type of options +  for name, type of Options      new type(name,onUpdated)    maintainLinkHintsView() @@ -319,3 +319,6 @@ document.addEventListener "DOMContentLoaded", ->    xhr.send() +# Exported for tests. +root = exports ? window +root.Options = Options diff --git a/tests/unit_tests/completion_test.coffee b/tests/unit_tests/completion_test.coffee index 4a0cf746..9ce0a466 100644 --- a/tests/unit_tests/completion_test.coffee +++ b/tests/unit_tests/completion_test.coffee @@ -4,9 +4,6 @@ extend(global, require "../../background_scripts/completion_engines.js")  extend(global, require "../../background_scripts/completion.js")  extend global, require "./test_chrome_stubs.js" -global.document = -  createElement: -> {} -  context "bookmark completer",    setup ->      @bookmark3 = { title: "bookmark3", url: "bookmark3.com" } diff --git a/tests/unit_tests/settings_test.coffee b/tests/unit_tests/settings_test.coffee index 08145190..47abe97f 100644 --- a/tests/unit_tests/settings_test.coffee +++ b/tests/unit_tests/settings_test.coffee @@ -7,6 +7,7 @@ Utils.isBackgroundPage = -> true  Utils.isExtensionPage = -> true  global.localStorage = {}  extend(global,require "../../lib/settings.js") +extend(global,require "../../pages/options.js")  context "settings", @@ -80,3 +81,10 @@ context "synced settings",    should "sync a key which is not a known setting (without crashing)", ->      chrome.storage.sync.set { notASetting: JSON.stringify("notAUsefullValue") } + +context "default valuess", + +  should "have a default value for every option", -> +    for own key of Options +      assert.isTrue key of Settings.defaults + diff --git a/tests/unit_tests/test_chrome_stubs.coffee b/tests/unit_tests/test_chrome_stubs.coffee index fe2fc298..8a677990 100644 --- a/tests/unit_tests/test_chrome_stubs.coffee +++ b/tests/unit_tests/test_chrome_stubs.coffee @@ -8,6 +8,10 @@  exports.window = {}  exports.localStorage = {} +global.document = +  createElement: -> {} +  addEventListener: -> +  exports.chrome =    runtime:      getManifest: () -> @@ -21,6 +25,7 @@ exports.chrome =    extension:      getURL: (path) -> path +    getBackgroundPage: -> {}    tabs:      onSelectionChanged: | 
