Fixed integration tests
This commit is contained in:
parent
cd45836924
commit
845105cf38
3 changed files with 22 additions and 30 deletions
|
@ -9,7 +9,7 @@ use trie_rs::{Trie, TrieBuilder};
|
|||
|
||||
use crate::app::{scanner, Error};
|
||||
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
|
||||
pub enum File {
|
||||
Directory(PathBuf),
|
||||
Song(PathBuf),
|
||||
|
@ -17,7 +17,7 @@ pub enum File {
|
|||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Browser {
|
||||
directories: HashMap<PathBuf, HashSet<File>>,
|
||||
directories: HashMap<PathBuf, Vec<File>>,
|
||||
flattened: Trie<String>,
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ impl Browser {
|
|||
let Some(files) = self.directories.get(virtual_path.as_ref()) else {
|
||||
return Err(Error::DirectoryNotFound(virtual_path.as_ref().to_owned()));
|
||||
};
|
||||
Ok(files.iter().cloned().collect())
|
||||
Ok(files.clone())
|
||||
}
|
||||
|
||||
pub fn flatten<P: AsRef<Path>>(&self, virtual_path: P) -> Result<Vec<PathBuf>, Error> {
|
||||
|
@ -56,7 +56,7 @@ impl Browser {
|
|||
}
|
||||
|
||||
pub struct Builder {
|
||||
directories: HashMap<PathBuf, HashSet<File>>,
|
||||
directories: HashMap<PathBuf, Vec<File>>,
|
||||
flattened: TrieBuilder<String>,
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ impl Builder {
|
|||
self.directories
|
||||
.entry(parent.clone())
|
||||
.or_default()
|
||||
.insert(File::Directory(directory.virtual_path));
|
||||
.push(File::Directory(directory.virtual_path));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ impl Builder {
|
|||
self.directories
|
||||
.entry(song.virtual_parent.clone())
|
||||
.or_default()
|
||||
.insert(File::Song(song.virtual_path.clone()));
|
||||
.push(File::Song(song.virtual_path.clone()));
|
||||
|
||||
self.flattened.push(
|
||||
song.virtual_path
|
||||
|
@ -97,7 +97,10 @@ impl Builder {
|
|||
);
|
||||
}
|
||||
|
||||
pub fn build(self) -> Browser {
|
||||
pub fn build(mut self) -> Browser {
|
||||
for directory in self.directories.values_mut() {
|
||||
directory.sort();
|
||||
}
|
||||
Browser {
|
||||
directories: self.directories,
|
||||
flattened: self.flattened.build(),
|
||||
|
|
|
@ -116,23 +116,10 @@ pub trait TestService {
|
|||
let response = self.fetch(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
|
||||
loop {
|
||||
let browse_request = protocol::browse::<V8>(Path::new(""));
|
||||
let response = self
|
||||
.fetch_json::<(), Vec<dto::BrowserEntry>>(&browse_request)
|
||||
.await;
|
||||
let entries = response.body();
|
||||
if !entries.is_empty() {
|
||||
break;
|
||||
}
|
||||
tokio::time::sleep(Duration::from_millis(100)).await;
|
||||
}
|
||||
|
||||
loop {
|
||||
let flatten_request = protocol::flatten::<V8>(Path::new(""));
|
||||
let response = self.fetch_json::<_, Vec<dto::Song>>(&flatten_request).await;
|
||||
let entries = response.body();
|
||||
if !entries.is_empty() {
|
||||
let response = self.fetch(&flatten_request).await;
|
||||
if response.status() == StatusCode::OK {
|
||||
break;
|
||||
}
|
||||
tokio::time::sleep(Duration::from_millis(100)).await;
|
||||
|
|
|
@ -78,7 +78,9 @@ async fn browse_directory_api_v7() {
|
|||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 5);
|
||||
match &entries[0] {
|
||||
dto::v7::CollectionFile::Song(s) => assert_eq!(s.artist.as_deref(), Some("Khemmis")),
|
||||
dto::v7::CollectionFile::Song(s) => {
|
||||
assert_eq!(s.path, path.join("01 - Above The Water.mp3"))
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
@ -100,10 +102,10 @@ async fn flatten_root() {
|
|||
service.login().await;
|
||||
|
||||
let request = protocol::flatten::<V8>(&PathBuf::new());
|
||||
let response = service.fetch_json::<_, Vec<dto::Song>>(&request).await;
|
||||
let response = service.fetch_json::<_, dto::SongList>(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 13);
|
||||
let song_list = response.body();
|
||||
assert_eq!(song_list.paths.len(), 13);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -115,10 +117,10 @@ async fn flatten_directory() {
|
|||
service.login().await;
|
||||
|
||||
let request = protocol::flatten::<V8>(Path::new(TEST_MOUNT_NAME));
|
||||
let response = service.fetch_json::<_, Vec<dto::Song>>(&request).await;
|
||||
let response = service.fetch_json::<_, dto::SongList>(&request).await;
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 13);
|
||||
let song_list = response.body();
|
||||
assert_eq!(song_list.paths.len(), 13);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -148,7 +150,7 @@ async fn flatten_directory_api_v7() {
|
|||
let entries = response.body();
|
||||
assert_eq!(entries.len(), 5);
|
||||
|
||||
assert_eq!(entries[0].artist.as_deref(), Some("Khemmis"));
|
||||
assert_eq!(entries[0].path, path.join("01 - Above The Water.mp3"));
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
Loading…
Add table
Reference in a new issue