Split lib.rs into smaller files #115

Merged
wojtek merged 14 commits from 110---split-lib.rs-into-smaller-files into main 2024-01-22 23:01:34 +01:00
2 changed files with 466 additions and 344 deletions
Showing only changes of commit 1616cf1a36 - Show all commits

View File

@ -468,9 +468,14 @@ mod tests {
static MUSICBRAINZ: &str =
"https://musicbrainz.org/artist/d368baa8-21ca-4759-9731-0b2753071ad8";
static MUSICBRAINZ_2: &str =
"https://musicbrainz.org/artist/823869a5-5ded-4f6b-9fb7-2a9344d83c6b";
static MUSICBUTLER: &str = "https://www.musicbutler.io/artist-page/483340948";
static MUSICBUTLER_2: &str = "https://www.musicbutler.io/artist-page/658903042/";
static BANDCAMP: &str = "https://thelasthangmen.bandcamp.com/";
static BANDCAMP_2: &str = "https://viciouscrusade.bandcamp.com/";
static QOBUZ: &str = "https://www.qobuz.com/nl-nl/interpreter/the-last-hangmen/1244413";
static QOBUZ_2: &str = "https://www.qobuz.com/nl-nl/interpreter/vicious-crusade/7522386";
#[test]
fn musicbrainz() {
@ -522,6 +527,451 @@ mod tests {
assert!(Qobuz::new(QOBUZ).is_ok());
}
#[test]
fn artist_sort_set_clear() {
let artist_id = ArtistId::new("an artist");
let sort_id_1 = ArtistId::new("sort id 1");
let sort_id_2 = ArtistId::new("sort id 2");
let mut artist = Artist::new(artist_id.clone());
assert_eq!(artist.id, artist_id);
assert_eq!(artist.sort, None);
assert_eq!(artist.get_sort_key(), &artist_id);
assert!(artist < Artist::new(sort_id_1.clone()));
assert!(artist < Artist::new(sort_id_2.clone()));
artist.set_sort_key(sort_id_1.clone());
assert_eq!(artist.id, artist_id);
assert_eq!(artist.sort.as_ref(), Some(&sort_id_1));
assert_eq!(artist.get_sort_key(), &sort_id_1);
assert!(artist > Artist::new(artist_id.clone()));
assert!(artist < Artist::new(sort_id_2.clone()));
artist.set_sort_key(sort_id_2.clone());
assert_eq!(artist.id, artist_id);
assert_eq!(artist.sort.as_ref(), Some(&sort_id_2));
assert_eq!(artist.get_sort_key(), &sort_id_2);
assert!(artist > Artist::new(artist_id.clone()));
assert!(artist > Artist::new(sort_id_1.clone()));
artist.clear_sort_key();
assert_eq!(artist.id, artist_id);
assert_eq!(artist.sort, None);
assert_eq!(artist.get_sort_key(), &artist_id);
assert!(artist < Artist::new(sort_id_1.clone()));
assert!(artist < Artist::new(sort_id_2.clone()));
}
#[test]
fn add_remove_musicbrainz_url() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Option<MusicBrainz> = None;
assert_eq!(artist.properties.musicbrainz, expected);
// Adding incorect URL is an error.
assert!(artist.add_musicbrainz_url(MUSICBUTLER).is_err());
assert!(artist.add_musicbrainz_url(BANDCAMP).is_err());
assert!(artist.add_musicbrainz_url(QOBUZ).is_err());
assert_eq!(artist.properties.musicbrainz, expected);
// Adding URL to artist.
assert!(artist.add_musicbrainz_url(MUSICBRAINZ).is_ok());
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ).unwrap());
assert_eq!(artist.properties.musicbrainz, expected);
// Adding the same URL again is ok, but does not do anything.
assert!(artist.add_musicbrainz_url(MUSICBRAINZ).is_ok());
assert_eq!(artist.properties.musicbrainz, expected);
// Adding further URLs is an error.
assert!(artist.add_musicbrainz_url(MUSICBRAINZ_2).is_err());
assert_eq!(artist.properties.musicbrainz, expected);
// Removing a URL not in the collection is okay, but does not do anything.
assert!(artist.remove_musicbrainz_url(MUSICBRAINZ_2).is_ok());
assert_eq!(artist.properties.musicbrainz, expected);
// Removing a URL in the collection removes it.
assert!(artist.remove_musicbrainz_url(MUSICBRAINZ).is_ok());
_ = expected.take();
assert_eq!(artist.properties.musicbrainz, expected);
assert!(artist.remove_musicbrainz_url(MUSICBRAINZ).is_ok());
assert_eq!(artist.properties.musicbrainz, expected);
}
#[test]
fn set_clear_musicbrainz_url() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Option<MusicBrainz> = None;
assert_eq!(artist.properties.musicbrainz, expected);
// Setting an incorrect URL is an error.
assert!(artist.set_musicbrainz_url(MUSICBUTLER).is_err());
assert!(artist.set_musicbrainz_url(BANDCAMP).is_err());
assert!(artist.set_musicbrainz_url(QOBUZ).is_err());
assert_eq!(artist.properties.musicbrainz, expected);
// Setting a URL on an artist.
assert!(artist.set_musicbrainz_url(MUSICBRAINZ).is_ok());
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ).unwrap());
assert_eq!(artist.properties.musicbrainz, expected);
assert!(artist.set_musicbrainz_url(MUSICBRAINZ).is_ok());
assert_eq!(artist.properties.musicbrainz, expected);
assert!(artist.set_musicbrainz_url(MUSICBRAINZ_2).is_ok());
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ_2).unwrap());
assert_eq!(artist.properties.musicbrainz, expected);
// Clearing URLs.
artist.clear_musicbrainz_url();
_ = expected.take();
assert_eq!(artist.properties.musicbrainz, expected);
}
#[test]
fn add_remove_musicbutler_urls() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Vec<MusicButler> = vec![];
assert_eq!(artist.properties.musicbutler, expected);
// If any URL is incorrect adding URLs is an error.
assert!(artist
.add_musicbutler_urls(vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(artist
.add_musicbutler_urls(vec![BANDCAMP, BANDCAMP_2])
.is_err());
assert!(artist.add_musicbutler_urls(vec![QOBUZ, QOBUZ_2]).is_err());
assert!(artist
.add_musicbutler_urls(vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(artist.properties.musicbutler, expected);
// Adding a single URL.
assert!(artist.add_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
// Adding a URL that already exists is ok, but does not do anything.
assert!(artist.add_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
assert_eq!(artist.properties.musicbutler, expected);
// Adding another single URL.
assert!(artist.add_musicbutler_urls(vec![MUSICBUTLER_2]).is_ok());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist.add_musicbutler_urls(vec![MUSICBUTLER_2]).is_ok());
assert_eq!(artist.properties.musicbutler, expected);
// Removing a URL.
assert!(artist.remove_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER);
assert_eq!(artist.properties.musicbutler, expected);
// Removing URls that do not exist is okay, they will be ignored.
assert!(artist.remove_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
assert_eq!(artist.properties.musicbutler, expected);
// Removing a URL.
assert!(artist.remove_musicbutler_urls(vec![MUSICBUTLER_2]).is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER_2);
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist.remove_musicbutler_urls(vec![MUSICBUTLER_2]).is_ok());
assert_eq!(artist.properties.musicbutler, expected);
// Adding URLs if some exist is okay, they will be ignored.
assert!(artist.add_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist
.add_musicbutler_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
// Removing URLs if some do not exist is okay, they will be ignored.
assert!(artist.remove_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER);
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist
.remove_musicbutler_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER_2);
assert_eq!(artist.properties.musicbutler, expected);
// Adding mutliple URLs without clashes.
assert!(artist
.add_musicbutler_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
// Removing multiple URLs without clashes.
assert!(artist
.remove_musicbutler_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.clear();
assert_eq!(artist.properties.musicbutler, expected);
}
#[test]
fn set_clear_musicbutler_urls() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Vec<MusicButler> = vec![];
assert_eq!(artist.properties.musicbutler, expected);
// If any URL is incorrect setting URLs is an error.
assert!(artist
.set_musicbutler_urls(vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(artist
.set_musicbutler_urls(vec![BANDCAMP, BANDCAMP_2])
.is_err());
assert!(artist.set_musicbutler_urls(vec![QOBUZ, QOBUZ_2]).is_err());
assert!(artist
.set_musicbutler_urls(vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(artist.properties.musicbutler, expected);
// Set URLs.
assert!(artist.set_musicbutler_urls(vec![MUSICBUTLER]).is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist.set_musicbutler_urls(vec![MUSICBUTLER_2]).is_ok());
expected.clear();
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
assert!(artist
.set_musicbutler_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.clear();
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(artist.properties.musicbutler, expected);
// Clear URLs.
artist.clear_musicbutler_urls();
expected.clear();
assert_eq!(artist.properties.musicbutler, expected);
}
#[test]
fn add_remove_bandcamp_urls() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Vec<Bandcamp> = vec![];
assert_eq!(artist.properties.bandcamp, expected);
// If any URL is incorrect adding URLs is an error.
assert!(artist
.add_bandcamp_urls(vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(artist
.add_bandcamp_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_err());
assert!(artist.add_bandcamp_urls(vec![QOBUZ, QOBUZ_2]).is_err());
assert!(artist
.add_bandcamp_urls(vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(artist.properties.bandcamp, expected);
// Adding a single URL.
assert!(artist.add_bandcamp_urls(vec![BANDCAMP]).is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
// Adding a URL that already exists is ok, but does not do anything.
assert!(artist.add_bandcamp_urls(vec![BANDCAMP]).is_ok());
assert_eq!(artist.properties.bandcamp, expected);
// Adding another single URL.
assert!(artist.add_bandcamp_urls(vec![BANDCAMP_2]).is_ok());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist.add_bandcamp_urls(vec![BANDCAMP_2]).is_ok());
assert_eq!(artist.properties.bandcamp, expected);
// Removing a URL.
assert!(artist.remove_bandcamp_urls(vec![BANDCAMP]).is_ok());
expected.retain(|url| url.as_str() != BANDCAMP);
assert_eq!(artist.properties.bandcamp, expected);
// Removing URls that do not exist is okay, they will be ignored.
assert!(artist.remove_bandcamp_urls(vec![BANDCAMP]).is_ok());
assert_eq!(artist.properties.bandcamp, expected);
// Removing a URL.
assert!(artist.remove_bandcamp_urls(vec![BANDCAMP_2]).is_ok());
expected.retain(|url| url.as_str() != BANDCAMP_2);
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist.remove_bandcamp_urls(vec![BANDCAMP_2]).is_ok());
assert_eq!(artist.properties.bandcamp, expected);
// Adding URLs if some exist is okay, they will be ignored.
assert!(artist.add_bandcamp_urls(vec![BANDCAMP]).is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist.add_bandcamp_urls(vec![BANDCAMP, BANDCAMP_2]).is_ok());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
// Removing URLs if some do not exist is okay, they will be ignored.
assert!(artist.remove_bandcamp_urls(vec![BANDCAMP]).is_ok());
expected.retain(|url| url.as_str() != BANDCAMP);
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist
.remove_bandcamp_urls(vec![BANDCAMP, BANDCAMP_2])
.is_ok());
expected.retain(|url| url.as_str() != BANDCAMP_2);
assert_eq!(artist.properties.bandcamp, expected);
// Adding mutliple URLs without clashes.
assert!(artist.add_bandcamp_urls(vec![BANDCAMP, BANDCAMP_2]).is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
// Removing multiple URLs without clashes.
assert!(artist
.remove_bandcamp_urls(vec![BANDCAMP, BANDCAMP_2])
.is_ok());
expected.clear();
assert_eq!(artist.properties.bandcamp, expected);
}
#[test]
fn set_clear_bandcamp_urls() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Vec<Bandcamp> = vec![];
assert_eq!(artist.properties.bandcamp, expected);
// If any URL is incorrect setting URLs is an error.
assert!(artist
.set_bandcamp_urls(vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(artist
.set_bandcamp_urls(vec![MUSICBUTLER, MUSICBUTLER_2])
.is_err());
assert!(artist.set_bandcamp_urls(vec![QOBUZ, QOBUZ_2]).is_err());
assert!(artist
.set_bandcamp_urls(vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(artist.properties.bandcamp, expected);
// Set URLs.
assert!(artist.set_bandcamp_urls(vec![BANDCAMP]).is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist.set_bandcamp_urls(vec![BANDCAMP_2]).is_ok());
expected.clear();
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
assert!(artist.set_bandcamp_urls(vec![BANDCAMP, BANDCAMP_2]).is_ok());
expected.clear();
expected.push(Bandcamp::new(BANDCAMP).unwrap());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(artist.properties.bandcamp, expected);
// Clear URLs.
artist.clear_bandcamp_urls();
expected.clear();
assert_eq!(artist.properties.bandcamp, expected);
}
#[test]
fn add_remove_qobuz_url() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Option<Qobuz> = None;
assert_eq!(artist.properties.qobuz, expected);
// Adding incorect URL is an error.
assert!(artist.add_qobuz_url(MUSICBRAINZ).is_err());
assert!(artist.add_qobuz_url(MUSICBUTLER).is_err());
assert!(artist.add_qobuz_url(BANDCAMP).is_err());
assert_eq!(artist.properties.qobuz, expected);
// Adding URL to artist.
assert!(artist.add_qobuz_url(QOBUZ).is_ok());
_ = expected.insert(Qobuz::new(QOBUZ).unwrap());
assert_eq!(artist.properties.qobuz, expected);
// Adding the same URL again is ok, but does not do anything.
assert!(artist.add_qobuz_url(QOBUZ).is_ok());
assert_eq!(artist.properties.qobuz, expected);
// Adding further URLs is an error.
assert!(artist.add_qobuz_url(QOBUZ_2).is_err());
assert_eq!(artist.properties.qobuz, expected);
// Removing a URL not in the collection is okay, but does not do anything.
assert!(artist.remove_qobuz_url(QOBUZ_2).is_ok());
assert_eq!(artist.properties.qobuz, expected);
// Removing a URL in the collection removes it.
assert!(artist.remove_qobuz_url(QOBUZ).is_ok());
_ = expected.take();
assert_eq!(artist.properties.qobuz, expected);
assert!(artist.remove_qobuz_url(QOBUZ).is_ok());
assert_eq!(artist.properties.qobuz, expected);
}
#[test]
fn set_clear_qobuz_url() {
let mut artist = Artist::new(ArtistId::new("an artist"));
let mut expected: Option<Qobuz> = None;
assert_eq!(artist.properties.qobuz, expected);
// Setting an incorrect URL is an error.
assert!(artist.set_qobuz_url(MUSICBUTLER).is_err());
assert!(artist.set_qobuz_url(BANDCAMP).is_err());
assert!(artist.set_qobuz_url(MUSICBRAINZ).is_err());
assert_eq!(artist.properties.qobuz, expected);
// Setting a URL on an artist.
assert!(artist.set_qobuz_url(QOBUZ).is_ok());
_ = expected.insert(Qobuz::new(QOBUZ).unwrap());
assert_eq!(artist.properties.qobuz, expected);
assert!(artist.set_qobuz_url(QOBUZ).is_ok());
assert_eq!(artist.properties.qobuz, expected);
assert!(artist.set_qobuz_url(QOBUZ_2).is_ok());
_ = expected.insert(Qobuz::new(QOBUZ_2).unwrap());
assert_eq!(artist.properties.qobuz, expected);
// Clearing URLs.
artist.clear_qobuz_url();
_ = expected.take();
assert_eq!(artist.properties.qobuz, expected);
}
#[test]
fn merge_artist_no_overlap() {
let left = FULL_COLLECTION[0].to_owned();

View File

@ -342,17 +342,13 @@ mod tests {
use crate::database::{self, MockIDatabase};
use crate::library::{self, testmod::LIBRARY_ITEMS, MockILibrary};
// FIXME: all tests with URLs should go to collection::artist
static MUSICBRAINZ: &str =
"https://musicbrainz.org/artist/d368baa8-21ca-4759-9731-0b2753071ad8";
static MUSICBRAINZ_2: &str =
"https://musicbrainz.org/artist/823869a5-5ded-4f6b-9fb7-2a9344d83c6b";
static MUSICBUTLER: &str = "https://www.musicbutler.io/artist-page/483340948";
static MUSICBUTLER_2: &str = "https://www.musicbutler.io/artist-page/658903042/";
static BANDCAMP: &str = "https://thelasthangmen.bandcamp.com/";
static BANDCAMP_2: &str = "https://viciouscrusade.bandcamp.com/";
static QOBUZ: &str = "https://www.qobuz.com/nl-nl/interpreter/the-last-hangmen/1244413";
static QOBUZ_2: &str = "https://www.qobuz.com/nl-nl/interpreter/vicious-crusade/7522386";
#[test]
fn artist_new_delete() {
@ -428,12 +424,14 @@ mod tests {
fn collection_error() {
let artist_id = ArtistId::new("an artist");
let mut music_hoard = MusicHoard::default();
music_hoard.add_artist(artist_id.clone());
let actual_err = music_hoard
.add_musicbrainz_url(&artist_id, QOBUZ)
.unwrap_err();
let expected_err =
Error::CollectionError(String::from("artist 'an artist' is not in the collection"));
let expected_err = Error::CollectionError(format!(
"an error occurred when processing a URL: invalid MusicBrainz URL: {QOBUZ}"
));
assert_eq!(actual_err, expected_err);
assert_eq!(actual_err.to_string(), expected_err.to_string());
}
@ -449,16 +447,6 @@ mod tests {
let mut expected: Option<MusicBrainz> = None;
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Adding incorect URL is an error.
assert!(music_hoard
.add_musicbrainz_url(&artist_id, MUSICBUTLER)
.is_err());
assert!(music_hoard
.add_musicbrainz_url(&artist_id, BANDCAMP)
.is_err());
assert!(music_hoard.add_musicbrainz_url(&artist_id, QOBUZ).is_err());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Adding URL to an artist not in the collection is an error.
assert!(music_hoard
.add_musicbrainz_url(&artist_id_2, MUSICBRAINZ)
@ -472,41 +460,18 @@ mod tests {
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Adding the same URL again is ok, but does not do anything.
assert!(music_hoard
.add_musicbrainz_url(&artist_id, MUSICBRAINZ)
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Adding further URLs is an error.
assert!(music_hoard
.add_musicbrainz_url(&artist_id, MUSICBRAINZ_2)
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Removing a URL from an artist not in the collection is an error.
assert!(music_hoard
.remove_musicbrainz_url(&artist_id_2, MUSICBRAINZ)
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Removing a URL not in the collection is okay, but does not do anything.
assert!(music_hoard
.remove_musicbrainz_url(&artist_id, MUSICBRAINZ_2)
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Removing a URL in the collection removes it.
assert!(music_hoard
.remove_musicbrainz_url(&artist_id, MUSICBRAINZ)
.is_ok());
_ = expected.take();
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
assert!(music_hoard
.remove_musicbrainz_url(&artist_id, MUSICBRAINZ)
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
}
#[test]
@ -520,16 +485,6 @@ mod tests {
let mut expected: Option<MusicBrainz> = None;
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Setting an incorrect URL is an error.
assert!(music_hoard
.set_musicbrainz_url(&artist_id, MUSICBUTLER)
.is_err());
assert!(music_hoard
.set_musicbrainz_url(&artist_id, BANDCAMP)
.is_err());
assert!(music_hoard.set_musicbrainz_url(&artist_id, QOBUZ).is_err());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Setting a URL on an artist not in the collection is an error.
assert!(music_hoard
.set_musicbrainz_url(&artist_id_2, MUSICBRAINZ)
@ -543,17 +498,6 @@ mod tests {
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
assert!(music_hoard
.set_musicbrainz_url(&artist_id, MUSICBRAINZ)
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
assert!(music_hoard
.set_musicbrainz_url(&artist_id, MUSICBRAINZ_2)
.is_ok());
_ = expected.insert(MusicBrainz::new(MUSICBRAINZ_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
// Clearing URLs on an artist that does not exist is an error.
assert!(music_hoard.clear_musicbrainz_url(&artist_id_2).is_err());
assert_eq!(music_hoard.collection[0].properties.musicbrainz, expected);
@ -575,109 +519,12 @@ mod tests {
let mut expected: Vec<MusicButler> = vec![];
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// If any URL is incorrect adding URLs is an error.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
.is_err());
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![QOBUZ, QOBUZ_2])
.is_err());
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding URLs to an artist not in the collection is an error.
assert!(music_hoard
.add_musicbutler_urls(&artist_id_2, vec![MUSICBUTLER])
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding a single URL.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding a URL that already exists is ok, but does not do anything.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding another single URL.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER_2])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER_2])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing URLs from an artist not in the collection is an error.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id_2, vec![MUSICBUTLER])
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing a URL.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER);
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing URls that do not exist is okay, they will be ignored.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing a URL.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER_2])
.is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER_2);
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER_2])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding URLs if some exist is okay, they will be ignored.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing URLs if some do not exist is okay, they will be ignored.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER);
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
expected.retain(|url| url.as_str() != MUSICBUTLER_2);
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Adding mutliple URLs without clashes.
assert!(music_hoard
.add_musicbutler_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
@ -686,6 +533,12 @@ mod tests {
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing URLs from an artist not in the collection is an error.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id_2, vec![MUSICBUTLER])
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Removing multiple URLs without clashes.
assert!(music_hoard
.remove_musicbutler_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
@ -705,21 +558,6 @@ mod tests {
let mut expected: Vec<MusicButler> = vec![];
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// If any URL is incorrect setting URLs is an error.
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
.is_err());
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![QOBUZ, QOBUZ_2])
.is_err());
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Seting URL on an artist not in the collection is an error.
assert!(music_hoard
.set_musicbutler_urls(&artist_id_2, vec![MUSICBUTLER])
@ -727,19 +565,6 @@ mod tests {
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
// Set URLs.
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![MUSICBUTLER])
.is_ok());
expected.push(MusicButler::new(MUSICBUTLER).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![MUSICBUTLER_2])
.is_ok());
expected.clear();
expected.push(MusicButler::new(MUSICBUTLER_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.musicbutler, expected);
assert!(music_hoard
.set_musicbutler_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
.is_ok());
@ -768,109 +593,12 @@ mod tests {
let mut expected: Vec<Bandcamp> = vec![];
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// If any URL is incorrect adding URLs is an error.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
.is_err());
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![QOBUZ, QOBUZ_2])
.is_err());
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding URLs to an artist not in the collection is an error.
assert!(music_hoard
.add_bandcamp_urls(&artist_id_2, vec![BANDCAMP])
.is_err());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding a single URL.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding a URL that already exists is ok, but does not do anything.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding another single URL.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP_2])
.is_ok());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP_2])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing URLs from an artist not in the collection is an error.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id_2, vec![BANDCAMP])
.is_err());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing a URL.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
expected.retain(|url| url.as_str() != BANDCAMP);
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing URls that do not exist is okay, they will be ignored.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing a URL.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP_2])
.is_ok());
expected.retain(|url| url.as_str() != BANDCAMP_2);
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP_2])
.is_ok());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding URLs if some exist is okay, they will be ignored.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
.is_ok());
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing URLs if some do not exist is okay, they will be ignored.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
expected.retain(|url| url.as_str() != BANDCAMP);
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
.is_ok());
expected.retain(|url| url.as_str() != BANDCAMP_2);
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Adding mutliple URLs without clashes.
assert!(music_hoard
.add_bandcamp_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
@ -879,6 +607,12 @@ mod tests {
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing URLs from an artist not in the collection is an error.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id_2, vec![BANDCAMP])
.is_err());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Removing multiple URLs without clashes.
assert!(music_hoard
.remove_bandcamp_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
@ -898,21 +632,6 @@ mod tests {
let mut expected: Vec<Bandcamp> = vec![];
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// If any URL is incorrect setting URLs is an error.
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![MUSICBRAINZ, MUSICBRAINZ_2])
.is_err());
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![MUSICBUTLER, MUSICBUTLER_2])
.is_err());
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![QOBUZ, QOBUZ_2])
.is_err());
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![MUSICBRAINZ, MUSICBUTLER, BANDCAMP, QOBUZ])
.is_err());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Seting URL on an artist not in the collection is an error.
assert!(music_hoard
.set_bandcamp_urls(&artist_id_2, vec![BANDCAMP])
@ -920,19 +639,6 @@ mod tests {
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
// Set URLs.
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![BANDCAMP])
.is_ok());
expected.push(Bandcamp::new(BANDCAMP).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![BANDCAMP_2])
.is_ok());
expected.clear();
expected.push(Bandcamp::new(BANDCAMP_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.bandcamp, expected);
assert!(music_hoard
.set_bandcamp_urls(&artist_id, vec![BANDCAMP, BANDCAMP_2])
.is_ok());
@ -961,12 +667,6 @@ mod tests {
let mut expected: Option<Qobuz> = None;
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Adding incorect URL is an error.
assert!(music_hoard.add_qobuz_url(&artist_id, MUSICBRAINZ).is_err());
assert!(music_hoard.add_qobuz_url(&artist_id, MUSICBUTLER).is_err());
assert!(music_hoard.add_qobuz_url(&artist_id, BANDCAMP).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Adding URL to an artist not in the collection is an error.
assert!(music_hoard.add_qobuz_url(&artist_id_2, QOBUZ).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
@ -976,29 +676,14 @@ mod tests {
_ = expected.insert(Qobuz::new(QOBUZ).unwrap());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Adding the same URL again is ok, but does not do anything.
assert!(music_hoard.add_qobuz_url(&artist_id, QOBUZ).is_ok());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Adding further URLs is an error.
assert!(music_hoard.add_qobuz_url(&artist_id, QOBUZ_2).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Removing a URL from an artist not in the collection is an error.
assert!(music_hoard.remove_qobuz_url(&artist_id_2, QOBUZ).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Removing a URL not in the collection is okay, but does not do anything.
assert!(music_hoard.remove_qobuz_url(&artist_id, QOBUZ_2).is_ok());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Removing a URL in the collection removes it.
assert!(music_hoard.remove_qobuz_url(&artist_id, QOBUZ).is_ok());
_ = expected.take();
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
assert!(music_hoard.remove_qobuz_url(&artist_id, QOBUZ).is_ok());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
}
#[test]
@ -1012,12 +697,6 @@ mod tests {
let mut expected: Option<Qobuz> = None;
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Setting an incorrect URL is an error.
assert!(music_hoard.set_qobuz_url(&artist_id, MUSICBUTLER).is_err());
assert!(music_hoard.set_qobuz_url(&artist_id, BANDCAMP).is_err());
assert!(music_hoard.set_qobuz_url(&artist_id, MUSICBRAINZ).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Setting a URL on an artist not in the collection is an error.
assert!(music_hoard.set_qobuz_url(&artist_id_2, QOBUZ).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
@ -1027,13 +706,6 @@ mod tests {
_ = expected.insert(Qobuz::new(QOBUZ).unwrap());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
assert!(music_hoard.set_qobuz_url(&artist_id, QOBUZ).is_ok());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
assert!(music_hoard.set_qobuz_url(&artist_id, QOBUZ_2).is_ok());
_ = expected.insert(Qobuz::new(QOBUZ_2).unwrap());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);
// Clearing URLs on an artist that does not exist is an error.
assert!(music_hoard.clear_qobuz_url(&artist_id_2).is_err());
assert_eq!(music_hoard.collection[0].properties.qobuz, expected);