hitomi 0.8.1

A CLI application that builds and updates playlists on a Plex server using json-based profiles.
Documentation
use nutype::nutype;

#[nutype(
    derive(
        Clone,
        Debug,
        Default,
        Deserialize,
        Display,
        Serialize,
        AsRef,
        Deref,
        PartialEq
    ),
    default = "plex://track/0a0a0a0a0a0a0a0a0a0a0a0a",
    sanitize(trim),
    validate(not_empty)
)]
pub struct Guid(String);

#[cfg(test)]
mod guid_tests {
    use pretty_assertions::assert_eq;

    use super::*;

    #[test]
    fn test_valid_guid() {
        let valid_track = "plex://track/608bcb5f0f0b9c002cf4cd16";
        let valid_album = "plex://album/608bbd7b295725002cd9c7cc";
        let valid_artist = "plex://artist/5fb686acfb665dfcb10d25c9";

        assert_eq!(
            valid_track,
            Guid::try_new(valid_track).unwrap().into_inner()
        );
        assert_eq!(
            valid_album,
            Guid::try_new(valid_album).unwrap().into_inner()
        );
        assert_eq!(
            valid_artist,
            Guid::try_new(valid_artist).unwrap().into_inner()
        );
    }

    #[test]
    fn test_invalid_guid_empty() {
        let expected = Err(GuidError::NotEmptyViolated);
        let invalid = "";
        let result = Guid::try_new(invalid);
        assert_eq!(expected, result)
    }
}