use std::sync::Arc;
use nargo_config::NargoConfig;
use nargo_parser::NargoParser;
use nargo_types::NargoContext;
#[test]
fn test_parse_simple_component() {
let source = r#"
<template>
<div class="container">
<h1>{{ title }}</h1>
</div>
</template>
<script lang="ts">
import { ref } from 'vue';
const title = ref('Hello Nargo');
</script>
<style scoped>
.container {
padding: 20px;
}
</style>
"#;
let config = NargoConfig::default();
let ctx = Arc::new(NargoContext::new(config));
let parser = NargoParser::new(ctx);
let result = parser.parse("test.nargo", source);
assert!(result.is_ok());
let module = result.unwrap();
assert!(module.template.is_some());
assert!(module.script.is_some());
assert_eq!(module.styles.len(), 1);
}
#[test]
fn test_parse_template_only() {
let source = r#"
<template>
<div>Hello World</div>
</template>
"#;
let config = NargoConfig::default();
let ctx = Arc::new(NargoContext::new(config));
let parser = NargoParser::new(ctx);
let result = parser.parse("test.nargo", source);
assert!(result.is_ok());
let module = result.unwrap();
assert!(module.template.is_some());
assert!(module.script.is_none());
assert!(module.styles.is_empty());
}
#[test]
fn test_parse_script_only() {
let source = r#"
<script lang="ts">
const message = 'Hello';
function greet() {
return message;
}
</script>
"#;
let config = NargoConfig::default();
let ctx = Arc::new(NargoContext::new(config));
let parser = NargoParser::new(ctx);
let result = parser.parse("test.nargo", source);
assert!(result.is_ok());
let module = result.unwrap();
assert!(module.template.is_none());
assert!(module.script.is_some());
}