discogs_api/endpoints/
artist.rs1use crate::Error;
2
3use super::Endpoint;
4
5pub struct Artist;
6
7impl Endpoint<'_> for Artist {
8 type Parameters = isize;
9 type ReturnType = crate::data_types::Artist;
10
11 fn build_url(base: &reqwest::Url, params: Self::Parameters) -> Result<reqwest::Url, Error> {
12 base.join(&format!("/artists/{params}"))
13 .map_err(|_| Error::UrlError)
14 }
15}
16
17#[cfg(test)]
18mod tests {
19 use super::Artist;
20 use crate::{Auth, Client};
21
22 #[test]
23 fn basic() {
24 let id = 8298093;
25 let data = Client::builder()
26 .build()
27 .unwrap()
28 .get::<Artist>(id)
29 .unwrap();
30 assert_eq!(data.id, id);
31 assert_eq!(data.name.as_str(), "Meenoi");
32 }
33
34 #[test]
35 fn with_auth() {
36 let id = 5210284;
37 let pat = std::env::var("discogs-pat")
38 .expect("expected personal access token in env var `discogs-pat`");
39
40 let data = Client::builder()
41 .auth(Auth::Token(pat))
42 .build()
43 .unwrap()
44 .get::<Artist>(id)
45 .unwrap();
46
47 assert_eq!(data.name.as_str(), "BLACKPINK");
48 assert_eq!(data.id, id);
49 assert_eq!(data.realname.as_ref().unwrap().as_str(), "λΈλνν¬");
50 assert!(!data.urls.is_empty());
51
52 let member_ids = [6771863, 6771866, 6771868, 6771905];
53 for member in data.members.as_ref().unwrap() {
54 assert!(
55 member_ids.contains(&member.id),
56 "found unexpected member id, `{}`",
57 member.id
58 );
59 }
60
61 assert!(!data.images[0].resource_url.is_empty());
62 }
63}