tokio.rs (2355B)
1 use l10nregistry_tests::TestFileFetcher; 2 use unic_langid::LanguageIdentifier; 3 4 static FTL_RESOURCE_PRESENT: &str = "toolkit/global/textActions.ftl"; 5 static FTL_RESOURCE_MISSING: &str = "missing.ftl"; 6 7 #[tokio::test] 8 async fn file_source_fetch() { 9 let fetcher = TestFileFetcher::new(); 10 let en_us: LanguageIdentifier = "en-US".parse().unwrap(); 11 let fs1 = 12 fetcher.get_test_file_source("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"); 13 14 let file = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()).await; 15 assert!(file.is_some()); 16 } 17 18 #[tokio::test] 19 async fn file_source_fetch_missing() { 20 let fetcher = TestFileFetcher::new(); 21 let en_us: LanguageIdentifier = "en-US".parse().unwrap(); 22 let fs1 = 23 fetcher.get_test_file_source("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"); 24 25 let file = fs1.fetch_file(&en_us, &FTL_RESOURCE_MISSING.into()).await; 26 assert!(file.is_none()); 27 } 28 29 #[tokio::test] 30 async fn file_source_already_loaded() { 31 let fetcher = TestFileFetcher::new(); 32 let en_us: LanguageIdentifier = "en-US".parse().unwrap(); 33 let fs1 = 34 fetcher.get_test_file_source("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"); 35 36 let file = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()).await; 37 assert!(file.is_some()); 38 let file = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()).await; 39 assert!(file.is_some()); 40 } 41 42 #[tokio::test] 43 async fn file_source_concurrent() { 44 let fetcher = TestFileFetcher::new(); 45 let en_us: LanguageIdentifier = "en-US".parse().unwrap(); 46 let fs1 = 47 fetcher.get_test_file_source("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"); 48 49 let file1 = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()); 50 let file2 = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()); 51 assert!(file1.await.is_some()); 52 assert!(file2.await.is_some()); 53 } 54 55 #[test] 56 fn file_source_sync_after_async_fail() { 57 let fetcher = TestFileFetcher::new(); 58 let en_us: LanguageIdentifier = "en-US".parse().unwrap(); 59 let fs1 = 60 fetcher.get_test_file_source("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"); 61 62 let _ = fs1.fetch_file(&en_us, &FTL_RESOURCE_PRESENT.into()); 63 let file2 = fs1.fetch_file_sync(&en_us, &FTL_RESOURCE_PRESENT.into(), true); 64 assert!(file2.is_some()); 65 }