From 03c1b2b9ae2c605820ab73606c59767bbc08a75d Mon Sep 17 00:00:00 2001 From: Wojciech Kozlowski Date: Sun, 29 Sep 2024 21:29:20 +0200 Subject: [PATCH] Complete unit tests --- src/external/musicbrainz/api/browse.rs | 14 ++++++++++++-- src/external/musicbrainz/api/mod.rs | 20 ++++++++++++++++++++ src/external/musicbrainz/api/search/mod.rs | 17 +++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/external/musicbrainz/api/browse.rs b/src/external/musicbrainz/api/browse.rs index e6299b0..9d1a21d 100644 --- a/src/external/musicbrainz/api/browse.rs +++ b/src/external/musicbrainz/api/browse.rs @@ -109,8 +109,8 @@ mod tests { collection::album::{AlbumPrimaryType, AlbumSecondaryType}, external::musicbrainz::{ api::{ - SerdeAlbumDate, SerdeAlbumPrimaryType, SerdeAlbumSecondaryType, SerdeMbid, - MB_MAX_PAGE_LIMIT, + tests::next_page_test, SerdeAlbumDate, SerdeAlbumPrimaryType, + SerdeAlbumSecondaryType, SerdeMbid, MB_MAX_PAGE_LIMIT, }, MockIMusicBrainzHttp, }, @@ -118,6 +118,16 @@ mod tests { use super::*; + #[test] + fn browse_release_group_next_page() { + let page = BrowseReleaseGroupPage { + release_group_offset: 5, + release_group_count: 45, + }; + + next_page_test(|val| page.next_page_offset(val)); + } + #[test] fn browse_release_group() { let mbid = "00000000-0000-0000-0000-000000000000"; diff --git a/src/external/musicbrainz/api/mod.rs b/src/external/musicbrainz/api/mod.rs index 7faf9de..2f61f75 100644 --- a/src/external/musicbrainz/api/mod.rs +++ b/src/external/musicbrainz/api/mod.rs @@ -84,6 +84,7 @@ impl PageSettings { } } +#[derive(Debug, PartialEq, Eq)] pub enum NextPage { Offset(usize), Complete, @@ -358,6 +359,25 @@ mod tests { assert!(!format!("{unk_err:?}").is_empty()); } + pub fn next_page_test(mut f: Fn) + where + Fn: FnMut(usize) -> NextPage, + { + let next = f(20); + assert_eq!(next, NextPage::Offset(25)); + + let next = f(40); + assert_eq!(next, NextPage::Complete); + + let next = f(100); + assert_eq!(next, NextPage::Complete); + } + + #[test] + fn next_page() { + next_page_test(|val| NextPage::next_page_offset(5, 45, val)); + } + #[test] fn format_page_settings() { let paging = PageSettings::default(); diff --git a/src/external/musicbrainz/api/search/mod.rs b/src/external/musicbrainz/api/search/mod.rs index daefcba..6fcb4cc 100644 --- a/src/external/musicbrainz/api/search/mod.rs +++ b/src/external/musicbrainz/api/search/mod.rs @@ -64,3 +64,20 @@ impl MusicBrainzClient { impl_search_entity!(Artist, "artist"); impl_search_entity!(ReleaseGroup, "release-group"); } + +#[cfg(test)] +mod tests { + use crate::external::musicbrainz::api::tests::next_page_test; + + use super::*; + + #[test] + fn search_next_page() { + let page = SearchPage { + offset: 5, + count: 45, + }; + + next_page_test(|val| page.next_page_offset(val)); + } +}