ferro_cli/doctor/
registry.rs1use super::check::DoctorCheck;
4use super::checks::{
5 CopyDirsDockerignoreCollisionCheck, DatabaseUrlSqliteInProdCheck, DbConnectionCheck,
6 DeployEnvParityCheck, DirtyGitTreeCheck, DockerTemplateDriftCheck, GeneratedArtifactsCheck,
7 LocalEnvParityCheck, MigrationsCheck, ToolchainCheck,
8};
9
10pub fn default_checks() -> Vec<Box<dyn DoctorCheck>> {
16 vec![
17 Box::new(ToolchainCheck),
18 Box::new(DbConnectionCheck),
19 Box::new(MigrationsCheck),
20 Box::new(LocalEnvParityCheck),
21 Box::new(DeployEnvParityCheck),
22 Box::new(CopyDirsDockerignoreCollisionCheck),
23 Box::new(DockerTemplateDriftCheck),
24 Box::new(GeneratedArtifactsCheck),
25 Box::new(DatabaseUrlSqliteInProdCheck),
26 Box::new(DirtyGitTreeCheck),
27 ]
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn default_checks_returns_ten_in_declared_order() {
36 let checks = default_checks();
37 assert_eq!(checks.len(), 10);
38 let names: Vec<&'static str> = checks.iter().map(|c| c.name()).collect();
39 assert_eq!(
40 names,
41 vec![
42 "toolchain_match",
43 "db_connection",
44 "migrations_pending",
45 "local_env_parity",
46 "deploy_env_parity",
47 "copy_dirs_dockerignore_collision",
48 "docker_template_drift",
49 "generated_artifacts",
50 "database_url_sqlite_in_prod",
51 "git_clean_and_pushed",
52 ]
53 );
54 }
55
56 #[test]
57 fn deploy_category_filter_returns_two() {
58 use crate::doctor::check::CheckCategory;
59 let checks = default_checks();
60 let deploy: Vec<&'static str> = checks
61 .iter()
62 .filter(|c| c.category() == CheckCategory::Deploy)
63 .map(|c| c.name())
64 .collect();
65 assert_eq!(
66 deploy,
67 vec!["copy_dirs_dockerignore_collision", "docker_template_drift"]
68 );
69 }
70}