Skip to content

Commit a4b93bc

Browse files
test(ssg): ✅ add new unit tests
1 parent bf1bdb8 commit a4b93bc

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

src/main.rs

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,4 +395,140 @@ mod tests {
395395

396396
cleanup_env();
397397
}
398+
399+
#[test]
400+
fn test_execute_main_logic_with_invalid_language_env() {
401+
initialize();
402+
cleanup_env();
403+
env::set_var("LANGUAGE", "invalid-lang");
404+
405+
let rt = Runtime::new().unwrap();
406+
let result = rt.block_on(async {
407+
let run_result = mock_run_ok();
408+
match run_result {
409+
Ok(_) => mock_translate_success(
410+
"invalid-lang",
411+
"main_logger_msg",
412+
),
413+
Err(e) => Err(e),
414+
}
415+
});
416+
417+
assert!(result.is_ok());
418+
assert_eq!(result.unwrap(), "Success message in invalid-lang");
419+
420+
cleanup_env();
421+
}
422+
423+
#[test]
424+
fn test_execute_main_logic_run_and_translate_failures() {
425+
initialize();
426+
cleanup_env();
427+
428+
let rt = Runtime::new().unwrap();
429+
430+
let result = rt.block_on(async {
431+
let run_result = mock_run_err();
432+
match run_result {
433+
Ok(_) => mock_translate_failure("", "main_logger_msg"),
434+
Err(e) => {
435+
Err(format!("Run and translate failed: {}", e))
436+
}
437+
}
438+
});
439+
440+
assert!(result.is_err());
441+
assert_eq!(
442+
result.unwrap_err(),
443+
"Run and translate failed: Site generation failed"
444+
);
445+
446+
cleanup_env();
447+
}
448+
449+
#[test]
450+
fn test_execute_main_logic_with_unsupported_language() {
451+
initialize();
452+
cleanup_env();
453+
env::set_var("LANGUAGE", "unsupported-lang");
454+
455+
let rt = Runtime::new().unwrap();
456+
let result = rt.block_on(async {
457+
let run_result = mock_run_ok();
458+
match run_result {
459+
Ok(_) => mock_translate_failure(
460+
"unsupported-lang",
461+
"main_logger_msg",
462+
),
463+
Err(e) => Err(e),
464+
}
465+
});
466+
467+
assert!(result.is_err());
468+
assert_eq!(result.unwrap_err(), "Translation error");
469+
470+
cleanup_env();
471+
}
472+
473+
#[test]
474+
fn test_concurrent_translate_with_mixed_results() {
475+
initialize();
476+
cleanup_env();
477+
let rt = Runtime::new().unwrap();
478+
479+
let languages = vec!["en", "fr", "error-lang", "es", "de"];
480+
let futures: Vec<_> = languages
481+
.into_iter()
482+
.map(|lang| async move {
483+
if lang == "error-lang" {
484+
mock_translate_failure(lang, "main_logger_msg")
485+
} else {
486+
mock_translate_success(lang, "main_logger_msg")
487+
}
488+
})
489+
.collect();
490+
491+
let results = rt.block_on(async {
492+
let mut results = vec![];
493+
for future in futures {
494+
results.push(future.await);
495+
}
496+
results
497+
});
498+
499+
assert!(results[0].is_ok());
500+
assert_eq!(
501+
results[0].as_ref().unwrap(),
502+
"Success message in en"
503+
);
504+
505+
assert!(results[1].is_ok());
506+
assert_eq!(
507+
results[1].as_ref().unwrap(),
508+
"Success message in fr"
509+
);
510+
511+
assert!(results[2].is_err());
512+
assert_eq!(
513+
results[2].as_ref().err(),
514+
Some(&"Translation error".to_string())
515+
);
516+
517+
cleanup_env();
518+
}
519+
520+
#[test]
521+
fn test_translate_with_empty_key() {
522+
initialize();
523+
cleanup_env();
524+
525+
let rt = Runtime::new().unwrap();
526+
let result =
527+
rt.block_on(async { mock_translate_failure("en", "") });
528+
529+
assert!(result.is_err());
530+
assert_eq!(result.unwrap_err(), "Translation error");
531+
532+
cleanup_env();
533+
}
398534
}

0 commit comments

Comments
 (0)