You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.8KB

  1. extern crate site;
  2. use std::env;
  3. use site::Site;
  4. #[test]
  5. fn can_parse_multilingual_site() {
  6. let mut path = env::current_dir().unwrap().parent().unwrap().parent().unwrap().to_path_buf();
  7. path.push("test_site_i18n");
  8. let mut site = Site::new(&path, "config.toml").unwrap();
  9. site.load().unwrap();
  10. assert_eq!(site.library.pages().len(), 9);
  11. assert_eq!(site.library.sections().len(), 4);
  12. // default index sections
  13. let default_index_section = site.library.get_section(&path.join("content").join("_index.md")).unwrap();
  14. assert_eq!(default_index_section.pages.len(), 1);
  15. assert!(default_index_section.ancestors.is_empty());
  16. let fr_index_section = site.library.get_section(&path.join("content").join("_index.fr.md")).unwrap();
  17. assert_eq!(fr_index_section.pages.len(), 1);
  18. assert!(fr_index_section.ancestors.is_empty());
  19. // blog sections get only their own language pages
  20. let blog_path = path.join("content").join("blog");
  21. let default_blog = site.library.get_section(&blog_path.join("_index.md")).unwrap();
  22. assert_eq!(default_blog.subsections.len(), 0);
  23. assert_eq!(default_blog.pages.len(), 4);
  24. assert_eq!(default_blog.ancestors, vec![*site.library.get_section_key(&default_index_section.file.path).unwrap()]);
  25. for key in &default_blog.pages {
  26. let page = site.library.get_page_by_key(*key);
  27. assert_eq!(page.lang, None);
  28. }
  29. let fr_blog = site.library.get_section(&blog_path.join("_index.fr.md")).unwrap();
  30. assert_eq!(fr_blog.subsections.len(), 0);
  31. assert_eq!(fr_blog.pages.len(), 3);
  32. assert_eq!(fr_blog.ancestors, vec![*site.library.get_section_key(&fr_index_section.file.path).unwrap()]);
  33. for key in &fr_blog.pages {
  34. let page = site.library.get_page_by_key(*key);
  35. assert_eq!(page.lang, Some("fr".to_string()));
  36. }
  37. }