use super::RULE;
#[test]
fn test_items_already_used() {
RULE.assert_ignores(
r#"
{a: [1 2], b: [3]} | items {|key, val| {key: $key, value: $val}}
"#,
);
}
#[test]
fn test_transpose_without_each() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose key val
"#,
);
}
#[test]
fn test_transpose_with_wrong_number_of_args() {
RULE.assert_ignores(
r#"
[[x y]; [1 2]] | transpose | each {|row| $row}
"#,
);
}
#[test]
fn test_transpose_with_one_arg() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose key | each {|row| $row.key}
"#,
);
}
#[test]
fn test_transpose_with_three_args() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose x y z | each {|row| $row.x}
"#,
);
}
#[test]
fn test_each_uses_row_variable_directly() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose k v | each {|row| $row | get k}
"#,
);
}
#[test]
fn test_each_accesses_other_fields() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose k v | each {|row| $row.k + $row.other}
"#,
);
}
#[test]
fn test_each_with_multiple_parameters() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose k v | each {|row, idx| {key: $row.k, index: $idx}}
"#,
);
}
#[test]
fn test_each_without_closure() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose k v | each $some_var
"#,
);
}
#[test]
fn test_transpose_separated_from_each() {
RULE.assert_ignores(
r#"
let data = {a: [1], b: [2]} | transpose k v
$data | each {|row| $row.k}
"#,
);
}
#[test]
fn test_each_closure_without_field_usage() {
RULE.assert_ignores(
r#"
{a: [1], b: [2]} | transpose k v | each {|row| 42}
"#,
);
}
#[test]
fn test_field_name_in_string_literal() {
RULE.assert_detects(
r#"
{a: [1], b: [2]} | transpose k v | each {|row| {msg: "row.k is useful", val: $row.k}}
"#,
);
}