ic_dbms_api/dbms/query/
delete.rs1use candid::CandidType;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, CandidType, Serialize, Deserialize)]
6pub enum DeleteBehavior {
7 Restrict,
10 Cascade,
13}
14
15#[cfg(test)]
16mod test {
17
18 use super::*;
19
20 #[test]
21 fn test_should_create_delete_behavior_variants() {
22 let restrict = DeleteBehavior::Restrict;
23 let cascade = DeleteBehavior::Cascade;
24
25 assert_eq!(restrict, DeleteBehavior::Restrict);
26 assert_eq!(cascade, DeleteBehavior::Cascade);
27 }
28
29 #[test]
30 #[allow(clippy::clone_on_copy)]
31 fn test_should_clone_delete_behavior() {
32 let behavior = DeleteBehavior::Cascade;
33 let cloned = behavior.clone();
34 assert_eq!(behavior, cloned);
35 }
36
37 #[test]
38 #[allow(clippy::clone_on_copy)]
39 fn test_should_copy_delete_behavior() {
40 let behavior = DeleteBehavior::Restrict;
41 let copied = behavior;
42 assert_eq!(behavior, copied);
43 }
44
45 #[test]
46 fn test_should_compare_delete_behaviors() {
47 assert_eq!(DeleteBehavior::Restrict, DeleteBehavior::Restrict);
48 assert_eq!(DeleteBehavior::Cascade, DeleteBehavior::Cascade);
49 assert_ne!(DeleteBehavior::Restrict, DeleteBehavior::Cascade);
50 }
51
52 #[test]
53 fn test_should_debug_delete_behavior() {
54 assert_eq!(format!("{:?}", DeleteBehavior::Restrict), "Restrict");
55 assert_eq!(format!("{:?}", DeleteBehavior::Cascade), "Cascade");
56 }
57
58 #[test]
59 fn test_should_candid_encode_decode_delete_behavior() {
60 for behavior in [DeleteBehavior::Restrict, DeleteBehavior::Cascade] {
61 let encoded = candid::encode_one(behavior).expect("failed to encode");
62 let decoded: DeleteBehavior = candid::decode_one(&encoded).expect("failed to decode");
63 assert_eq!(behavior, decoded);
64 }
65 }
66}