Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: chrome/content/tests/cssRules.js

Issue 29324604: Issue 2394 - Added unit tests for CSS property filters (Closed)
Patch Set: Created Dec. 3, 2015, 12:51 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/content/tests/cssRules.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/chrome/content/tests/cssRules.js
@@ -0,0 +1,77 @@
+(function()
+{
+ module("CSS property filter", {
+ setup: function()
+ {
+ prepareFilterComponents.call(this);
+ preparePrefs.call(this);
+ },
+ teardown: function()
+ {
+ restoreFilterComponents.call(this);
+ restorePrefs.call(this);
+ }
+ });
+
+ function runSelectorTest([text, domain, filters, expected])
+ {
+ for (let filter of filters)
+ {
+ filter = Filter.fromText(filter);
+ if (filter instanceof CSSPropertyFilter)
+ CSSRules.add(filter);
+ else
+ ElemHide.add(filter);
+ }
+
+ let result = CSSRules.getRulesForDomain(domain)
+ .map((filter) => filter.text);
+ deepEqual(result.sort(), expected.sort(), text);
+
+ CSSRules.clear();
+ ElemHide.clear();
+ }
+
+ let selectorTests = [
+ ["Ignore generic filters", "example.com", ["##[-abp-properties='foo']", "example.com##[-abp-properties='foo']", "~example.com##[-abp-properties='foo']"], ["example.com##[-abp-properties='foo']"]],
+ ["Ignore selectors with exceptions", "example.com", ["example.com##[-abp-properties='foo']", "example.com##[-abp-properties='bar']", "example.com#@#[-abp-properties='foo']"], ["example.com##[-abp-properties='bar']"]],
+ ["Ignore filters that include parent domain but exclude subdomain", "www.example.com", ["~www.example.com,example.com##[-abp-properties='foo']"], []],
+ ["Ignore filters with parent domain if exception matches subdomain", "www.example.com", ["www.example.com#@#[-abp-properties='foo']", "example.com##[-abp-properties='foo']"], []],
+ ["Ignore filters for other subdomain", "other.example.com", ["www.example.com##[-abp-properties='foo']", "other.example.com##[-abp-properties='foo']"], ["other.example.com##[-abp-properties='foo']"]]
+ ];
+
+ test("Domain restrictions", function()
+ {
+ selectorTests.forEach(runSelectorTest);
+ });
+
+ function compareRules(text, domain, expected)
+ {
+ let result = CSSRules.getRulesForDomain(domain)
+ .map((filter) => filter.text);
+ expected = expected.map((filter) => filter.text);
+ deepEqual(result.sort(), expected.sort(), text);
+ }
+
+ test("CSS property filters container", function()
+ {
+ let genericFilter = Filter.fromText("##filter1");
Wladimir Palant 2015/12/04 13:09:48 This comment hasn't been addressed from the previo
Thomas Greiner 2015/12/07 17:29:26 Done.
+ let domainFilter = Filter.fromText("example.com##filter2");
+ let subdomainFilter = Filter.fromText("www.example.com##filter3");
+ let otherDomainFilter = Filter.fromText("other.example.com##filter4");
+
+ CSSRules.add(genericFilter);
+ CSSRules.add(domainFilter);
+ CSSRules.add(subdomainFilter);
+ CSSRules.add(otherDomainFilter);
+ compareRules("Return all matching filters", "www.example.com",
+ [genericFilter, domainFilter, subdomainFilter]);
+
+ CSSRules.remove(genericFilter);
+ compareRules("Return all matching filters after removing one",
+ "www.example.com", [domainFilter, subdomainFilter]);
+
+ CSSRules.clear();
+ compareRules("Return no filters after clearing", "www.example.com", []);
+ });
+})();

Powered by Google App Engine
This is Rietveld