WIP ESLint rule to require 'data-*' attribute based selectors

This commit is contained in:
Keavon Chambers
2024-07-30 21:23:27 -07:00
parent 44ffb635e9
commit 0fbff9f96f
5 changed files with 1423 additions and 0 deletions
@@ -0,0 +1,36 @@
const { RuleTester } = require("eslint");
const myRule = require("./require-data-selectors");
const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 2015 } });
ruleTester.run(
"require-data-selectors",
myRule,
{
valid: [
{ code: `document.querySelector("[data-foo]")` },
{ code: `document.querySelector("[data-foo] [data-bar]")` },
{ code: `document.querySelector("[data-foo] > [data-bar]")` },
{ code: `document.querySelector("[data-foo]>[data-bar]")` },
{ code: `document.querySelector("[data-foo] ~ [data-bar]")` },
{ code: `document.querySelector("[data-foo]~[data-bar]")` },
{ code: `document.querySelector("[data-foo] + [data-bar]")` },
{ code: `document.querySelector("[data-foo]+[data-bar]")` },
{ code: `document.querySelector(" [data-foo][data-bar] ")` },
],
invalid: [
{ code: `document.querySelector(".foo")`, errors: 1 },
{ code: `document.querySelector("div")`, errors: 1 },
{ code: `document.querySelector("div.foo")`, errors: 1 },
{ code: `document.querySelector("#foo")`, errors: 1 },
{ code: `document.querySelector("div#foo")`, errors: 1 },
{ code: `document.querySelector("div#foo.bar")`, errors: 1 },
{ code: `document.querySelector("foo[data-bar]")`, errors: 1 },
{ code: `document.querySelector("[foo][data-bar]")`, errors: 1 },
{ code: `document.querySelector("[title]")`, errors: 1 },
{ code: `document.querySelector("foo[title]")`, errors: 1 },
],
}
);
console.log("All tests passed!");