Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions crates/oxc_linter/src/rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ mod jest {
pub mod no_untyped_mock_factory;
pub mod prefer_called_with;
pub mod prefer_comparison_matcher;
pub mod prefer_each;
pub mod prefer_equality_matcher;
pub mod prefer_expect_resolves;
pub mod prefer_hooks_in_order;
Expand Down Expand Up @@ -515,7 +516,6 @@ mod promise {
mod vitest {
pub mod no_conditional_tests;
pub mod no_import_node_test;
pub mod prefer_each;
pub mod prefer_to_be_falsy;
pub mod prefer_to_be_object;
pub mod prefer_to_be_truthy;
Expand Down Expand Up @@ -704,6 +704,7 @@ oxc_macros::declare_all_lint_rules! {
jest::no_test_prefixes,
jest::no_test_return_statement,
jest::no_untyped_mock_factory,
jest::prefer_each,
jest::prefer_called_with,
jest::prefer_comparison_matcher,
jest::prefer_equality_matcher,
Expand Down Expand Up @@ -1000,7 +1001,6 @@ oxc_macros::declare_all_lint_rules! {
unicorn::throw_new_error,
vitest::no_conditional_tests,
vitest::no_import_node_test,
vitest::prefer_each,
vitest::prefer_to_be_falsy,
vitest::prefer_to_be_object,
vitest::prefer_to_be_truthy,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ declare_oxc_lint!(
/// })
/// ```
PreferEach,
vitest,
jest,
style,
);

Expand Down Expand Up @@ -147,7 +147,140 @@ impl PreferEach {
fn test() {
use crate::tester::Tester;

let pass = vec![
let pass_jest = vec![
r#"it("is true", () => { expect(true).toBe(false) });"#,
r#"it.each(getNumbers())("only returns numbers that are greater than seven", number => {
expect(number).toBeGreaterThan(7);
});"#,
r#"it("returns numbers that are greater than five", function () {
for (const number of getNumbers()) {
expect(number).toBeGreaterThan(5);
}
});"#,
r#"it("returns things that are less than ten", function () {
for (const thing in things) {
expect(thing).toBeLessThan(10);
}
});"#,
r#"it("only returns numbers that are greater than seven", function () {
const numbers = getNumbers();
for (let i = 0; i < numbers.length; i++) {
expect(numbers[i]).toBeGreaterThan(7);
}
});"#,
];

let fail_jest = vec![
"for (const [input, expected] of data) {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
describe(\\`when the input is $\\{input}\\`, () => {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
});
}",
"for (const [input, expected] of data) {
describe(\\`when the input is $\\{input}\\`, () => {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
});
}
for (const [input, expected] of data) {
it.skip(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
it.skip(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"it('is true', () => {
expect(true).toBe(false);
});
for (const [input, expected] of data) {
it.skip(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
it.skip(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}
it('is true', () => {
expect(true).toBe(false);
});",
"it('is true', () => {
expect(true).toBe(false);
});
for (const [input, expected] of data) {
it.skip(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}
it('is true', () => {
expect(true).toBe(false);
});",
"for (const [input, expected] of data) {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}
for (const [input, expected] of data) {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
it(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}
for (const [input, expected] of data) {
test(\\`results in $\\{expected}\\`, () => {
expect(fn(input)).toBe(expected)
});
}",
"for (const [input, expected] of data) {
beforeEach(() => setupSomething(input));
test(\\`results in $\\{expected}\\`, () => {
expect(doSomething()).toBe(expected)
});
}",
r#"for (const [input, expected] of data) {
it("only returns numbers that are greater than seven", function () {
const numbers = getNumbers(input);
for (let i = 0; i < numbers.length; i++) {
expect(numbers[i]).toBeGreaterThan(7);
}
});
}"#,
r#"for (const [input, expected] of data) {
beforeEach(() => setupSomething(input));
it("only returns numbers that are greater than seven", function () {
const numbers = getNumbers();
for (let i = 0; i < numbers.length; i++) {
expect(numbers[i]).toBeGreaterThan(7);
}
});
}"#,
];

let pass_vitest = vec![
r#"it("is true", () => { expect(true).toBe(false) });"#,
r#"it.each(getNumbers())("only returns numbers that are greater than seven", number => {
expect(number).toBeGreaterThan(7);
Expand All @@ -171,7 +304,7 @@ fn test() {
});"#,
];

let fail = vec![
let fail_vitest = vec![
" for (const [input, expected] of data) {
it(`results in ${expected}`, () => {
expect(fn(input)).toBe(expected)
Expand Down Expand Up @@ -286,5 +419,12 @@ fn test() {
"#,
];

let mut pass = vec![];
pass.extend(pass_jest);
pass.extend(pass_vitest);
let mut fail = vec![];
fail.extend(fail_jest);
fail.extend(fail_vitest);

Tester::new(PreferEach::NAME, PreferEach::PLUGIN, pass, fail).test_and_snapshot();
}
Loading
Loading