nushell/crates/nu-command/tests/commands/headers.rs
raccmonteiro 7b0c0692dc
Type validation for headers command (#6918) (#7047)
cargo clippy lints

tests

format

Co-authored-by: Ricardo Monteiro <ricardo.monteiro@getmanta.com>
2022-11-09 16:43:24 -08:00

116 lines
2.6 KiB
Rust

use nu_test_support::{nu, pipeline};
#[test]
fn headers_uses_first_row_as_header() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open sample_headers.xlsx
| get Sheet1
| headers
| get header0
| to json --raw"#
));
assert_eq!(actual.out, r#"["r1c0","r2c0"]"#)
}
#[test]
fn headers_adds_missing_column_name() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
open sample_headers.xlsx
| get Sheet1
| headers
| get column1
| to json --raw"#
));
assert_eq!(actual.out, r#"["r1c1","r2c1"]"#)
}
#[test]
fn headers_invalid_column_type_empty_record() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [{}, 2], [3,4] ]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}
#[test]
fn headers_invalid_column_type_record() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [1 ($nu.scope)] [2 2]]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}
#[test]
fn headers_invalid_column_type_array() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [[f,g], 2], [3,4] ]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}
#[test]
fn headers_invalid_column_type_range() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [(1..5), 2], [3,4] ]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}
#[test]
fn headers_invalid_column_type_duration() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [((date now) - (date now)), 2], [3,4] ]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}
#[test]
fn headers_invalid_column_type_binary() {
let actual = nu!(
cwd: "tests/fixtures/formats", pipeline(
r#"
[[a b]; [("aa" | into binary), 2], [3,4] ]
| headers"#
));
assert!(actual
.err
.contains("needs compatible type: Null, String, Bool, Float, Int"));
}