use super::*;
#[test]
fn test_inline_jsdoc_with_export_interface() {
let source =
r#"/** @derive(Deserialize) */ export interface User { name: string; age: number; }"#;
{
let result = expand_test(source);
let error_count = result
.diagnostics
.iter()
.filter(|d| d.level == DiagnosticLevel::Error)
.count();
assert_eq!(
error_count, 0,
"Should have no errors for inline JSDoc, got {}",
error_count
);
assert!(
result.code.contains("User") && result.code.contains("deserialize"),
"Should generate deserialize for Deserialize on interface. Got:\n{}",
result.code
);
}
}
#[test]
fn test_inline_jsdoc_with_export_class() {
let source = r#"/** @derive(Debug) */ export class User { name: string; }"#;
{
let result = expand_test(source);
let error_count = result
.diagnostics
.iter()
.filter(|d| d.level == DiagnosticLevel::Error)
.count();
assert_eq!(
error_count, 0,
"Should have no errors for inline JSDoc on class, got {}",
error_count
);
assert!(
result.code.contains("toString"),
"Should generate toString for Debug on class. Got:\n{}",
result.code
);
}
}
#[test]
fn test_inline_jsdoc_with_export_enum() {
let source = r#"/** @derive(Debug) */ export enum Status { Active, Inactive }"#;
{
let result = expand_test(source);
let error_count = result
.diagnostics
.iter()
.filter(|d| d.level == DiagnosticLevel::Error)
.count();
assert_eq!(
error_count, 0,
"Should have no errors for inline JSDoc on enum, got {}",
error_count
);
assert!(
result.code.contains("Status") && result.code.contains("toString"),
"Should generate toString for Debug on enum. Got:\n{}",
result.code
);
}
}
#[test]
fn test_inline_jsdoc_with_export_type() {
let source = r#"/** @derive(Debug) */ export type Point = { x: number; y: number; }"#;
{
let result = expand_test(source);
let error_count = result
.diagnostics
.iter()
.filter(|d| d.level == DiagnosticLevel::Error)
.count();
assert_eq!(
error_count, 0,
"Should have no errors for inline JSDoc on type, got {}",
error_count
);
assert!(
result.code.contains("Point") && result.code.contains("toString"),
"Should generate toString for Debug on type alias. Got:\n{}",
result.code
);
}
}