From faa7b4e17ce2ba49192a2eeb3e707cfcbb5e79c3 Mon Sep 17 00:00:00 2001 From: trivernis Date: Tue, 7 Dec 2021 18:16:09 +0100 Subject: [PATCH] Add automated tests Signed-off-by: trivernis --- mediarepo-api/.github/workflows/build.yml | 5 +- mediarepo-api/src/lib.rs | 3 ++ mediarepo-api/src/test/mod.rs | 2 + .../src/test/test_type_serialization.rs | 54 +++++++++++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 mediarepo-api/src/test/mod.rs create mode 100644 mediarepo-api/src/test/test_type_serialization.rs diff --git a/mediarepo-api/.github/workflows/build.yml b/mediarepo-api/.github/workflows/build.yml index bbaa82d..1df7aef 100644 --- a/mediarepo-api/.github/workflows/build.yml +++ b/mediarepo-api/.github/workflows/build.yml @@ -44,4 +44,7 @@ jobs: run: cargo build --features=client-api - name: Build Plugin - run: cargo build --features=tauri-plugin \ No newline at end of file + run: cargo build --features=tauri-plugin + + - name: Test + run: cargo test --all-features \ No newline at end of file diff --git a/mediarepo-api/src/lib.rs b/mediarepo-api/src/lib.rs index 36156c3..5cf790d 100644 --- a/mediarepo-api/src/lib.rs +++ b/mediarepo-api/src/lib.rs @@ -11,3 +11,6 @@ pub mod tauri_plugin; #[cfg(feature = "bromine")] pub use bromine; + +#[cfg(test)] +mod test; diff --git a/mediarepo-api/src/test/mod.rs b/mediarepo-api/src/test/mod.rs new file mode 100644 index 0000000..ce36222 --- /dev/null +++ b/mediarepo-api/src/test/mod.rs @@ -0,0 +1,2 @@ +#[cfg(feature = "bromine")] +mod test_type_serialization; diff --git a/mediarepo-api/src/test/test_type_serialization.rs b/mediarepo-api/src/test/test_type_serialization.rs new file mode 100644 index 0000000..d183d46 --- /dev/null +++ b/mediarepo-api/src/test/test_type_serialization.rs @@ -0,0 +1,54 @@ +use crate::types::files::{ + FilterExpression, GetFileThumbnailOfSizeRequest, SortDirection, SortKey, TagQuery, +}; +use crate::types::identifier::FileIdentifier; +use bromine::payload::DynamicSerializer; +use bromine::prelude::IPCResult; +use serde::de::DeserializeOwned; +use serde::Serialize; + +#[test] +fn it_serializes_file_identifier() { + test_serialization(FileIdentifier::ID(0)).unwrap(); +} + +#[test] +fn it_serializes_get_file_thumbnail_of_size_requests() { + test_serialization(GetFileThumbnailOfSizeRequest { + id: FileIdentifier::ID(0), + max_size: (u32::MAX, u32::MAX), + min_size: (0, 0), + }) + .unwrap(); +} + +#[test] +fn it_serializes_tag_queries() { + test_serialization(TagQuery { + tag: String::from("Hello"), + negate: true, + }) + .unwrap(); +} + +#[test] +fn it_serializes_filter_expressions() { + test_serialization(FilterExpression::Query(TagQuery { + tag: String::from("World"), + negate: false, + })) + .unwrap(); +} + +#[test] +fn it_serializes_sort_keys() { + test_serialization(SortKey::FileName(SortDirection::Descending)).unwrap(); +} + +fn test_serialization(data: T) -> IPCResult<()> { + let serializer = DynamicSerializer::first_available(); + let bytes = serializer.serialize(data)?; + let _: T = serializer.deserialize(&bytes[..])?; + + Ok(()) +}