summaryrefslogtreecommitdiffstats
path: root/devtools/client/shared/test/browser_filter-presets-01.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /devtools/client/shared/test/browser_filter-presets-01.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/shared/test/browser_filter-presets-01.js')
-rw-r--r--devtools/client/shared/test/browser_filter-presets-01.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_filter-presets-01.js b/devtools/client/shared/test/browser_filter-presets-01.js
new file mode 100644
index 000000000..859f5f63e
--- /dev/null
+++ b/devtools/client/shared/test/browser_filter-presets-01.js
@@ -0,0 +1,99 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Tests saving presets
+
+const {CSSFilterEditorWidget} = require("devtools/client/shared/widgets/FilterWidget");
+const {getClientCssProperties} = require("devtools/shared/fronts/css-properties");
+
+const TEST_URI = `data:text/html,<div id="filter-container" />`;
+
+add_task(function* () {
+ let [,, doc] = yield createHost("bottom", TEST_URI);
+ const cssIsValid = getClientCssProperties().getValidityChecker(doc);
+
+ const container = doc.querySelector("#filter-container");
+ let widget = new CSSFilterEditorWidget(container, "none", cssIsValid);
+ // First render
+ yield widget.once("render");
+
+ const VALUE = "blur(2px) contrast(150%)";
+ const NAME = "Test";
+
+ yield showFilterPopupPresetsAndCreatePreset(widget, NAME, VALUE);
+
+ let preset = widget.el.querySelector(".preset");
+ is(preset.querySelector("label").textContent, NAME,
+ "Should show preset name correctly");
+ is(preset.querySelector("span").textContent, VALUE,
+ "Should show preset value preview correctly");
+
+ let list = yield widget.getPresets();
+ let input = widget.el.querySelector(".presets-list .footer input");
+ let data = list[0];
+
+ is(data.name, NAME,
+ "Should add the preset to asyncStorage - name property");
+ is(data.value, VALUE,
+ "Should add the preset to asyncStorage - name property");
+
+ info("Test overriding preset by using the same name");
+
+ const VALUE_2 = "saturate(50%) brightness(10%)";
+
+ widget.setCssValue(VALUE_2);
+
+ yield savePreset(widget);
+
+ is(widget.el.querySelectorAll(".preset").length, 1,
+ "Should override the preset with the same name - render");
+
+ list = yield widget.getPresets();
+ data = list[0];
+
+ is(list.length, 1,
+ "Should override the preset with the same name - asyncStorage");
+
+ is(data.name, NAME,
+ "Should override the preset with the same name - prop name");
+ is(data.value, VALUE_2,
+ "Should override the preset with the same name - prop value");
+
+ yield widget.setPresets([]);
+
+ info("Test saving a preset without name");
+ input.value = "";
+
+ yield savePreset(widget, "preset-save-error");
+
+ list = yield widget.getPresets();
+ is(list.length, 0,
+ "Should not add a preset without name");
+
+ info("Test saving a preset without filters");
+
+ input.value = NAME;
+ widget.setCssValue("none");
+
+ yield savePreset(widget, "preset-save-error");
+
+ list = yield widget.getPresets();
+ is(list.length, 0,
+ "Should not add a preset without filters (value: none)");
+});
+
+/**
+ * Call savePreset on widget and wait for the specified event to emit
+ * @param {CSSFilterWidget} widget
+ * @param {string} expectEvent="render" The event to listen on
+ * @return {Promise}
+ */
+function savePreset(widget, expectEvent = "render") {
+ let onEvent = widget.once(expectEvent);
+ widget._savePreset({
+ preventDefault: () => {},
+ });
+ return onEvent;
+}