diff --git a/tests/serialize.rs b/tests/serialize.rs new file mode 100644 index 0000000..1191157 --- /dev/null +++ b/tests/serialize.rs @@ -0,0 +1,34 @@ +use { + hooked::{Config, ExitAction, PreCommit, Task}, + toml::to_string_pretty, +}; + +use insta::assert_snapshot; + +#[test] +fn test_serialize() { + let pre_commit_command = PreCommit { + name: Some("Command Test".to_string()), + on_failure: ExitAction::Continue, + task: Task { + command: Some("exit 0".to_string()), + script: None, + }, + }; + + let pre_commit_script = PreCommit { + name: Some("Script Test".to_string()), + on_failure: ExitAction::Stop, + task: Task { + command: None, + script: Some("test.sh".into()), + }, + }; + + let config = Config { + general: Default::default(), + pre_commit: vec![pre_commit_command, pre_commit_script], + }; + + assert_snapshot!("serialize", to_string_pretty(&config).unwrap()); +} diff --git a/tests/snapshots/parsing__defaults.snap b/tests/snapshots/parsing__defaults.snap index 8e792bd..358674e 100644 --- a/tests/snapshots/parsing__defaults.snap +++ b/tests/snapshots/parsing__defaults.snap @@ -6,4 +6,5 @@ Config { general: General { directory: "hooks", }, + pre_commit: [], } diff --git a/tests/snapshots/serialize__serialize.snap b/tests/snapshots/serialize__serialize.snap new file mode 100644 index 0000000..e73187d --- /dev/null +++ b/tests/snapshots/serialize__serialize.snap @@ -0,0 +1,17 @@ +--- +source: tests/serialize.rs +expression: to_string_pretty(&config).unwrap() +--- +[general] +directory = 'hooks' + +[[pre_commit]] +name = 'Command Test' +on_failure = 'continue' +command = 'exit 0' + +[[pre_commit]] +name = 'Script Test' +on_failure = 'stop' +script = 'test.sh' +