a database layer insipred by caqti and ecto
at main 1.7 kB view raw
1open Repodb 2 3let test_show_db_error_not_found () = 4 Alcotest.(check string) 5 "Not_found message" "Record not found" 6 (Error.show_db_error Error.Not_found) 7 8let test_show_db_error_query_failed () = 9 Alcotest.(check string) 10 "Query_failed message" "Query failed: syntax error" 11 (Error.show_db_error (Error.Query_failed "syntax error")) 12 13let test_show_db_error_constraint_violation () = 14 let err = 15 Error.Constraint_violation 16 { constraint_name = "users_email_key"; message = "duplicate key" } 17 in 18 Alcotest.(check string) 19 "Constraint_violation message" 20 "Constraint violation (users_email_key): duplicate key" 21 (Error.show_db_error err) 22 23let test_show_db_error_validation_failed () = 24 let err = 25 Error.Validation_failed [ "name can't be blank"; "email invalid" ] 26 in 27 Alcotest.(check string) 28 "Validation_failed message" 29 "Validation failed: name can't be blank; email invalid" 30 (Error.show_db_error err) 31 32let test_show_validation_error () = 33 let err = 34 Error. 35 { field = "email"; message = "has invalid format"; validation = "format" } 36 in 37 Alcotest.(check string) 38 "validation error format" "email: has invalid format (format)" 39 (Error.show_validation_error err) 40 41let tests = 42 [ 43 ("show_db_error Not_found", `Quick, test_show_db_error_not_found); 44 ("show_db_error Query_failed", `Quick, test_show_db_error_query_failed); 45 ( "show_db_error Constraint_violation", 46 `Quick, 47 test_show_db_error_constraint_violation ); 48 ( "show_db_error Validation_failed", 49 `Quick, 50 test_show_db_error_validation_failed ); 51 ("show_validation_error", `Quick, test_show_validation_error); 52 ]