package apps import ( "path/filepath" "testing" ) func TestAppAvailableAt(t *testing.T) { root := "/srv/zddc" cases := []struct { dir, app string want bool }{ // archive: everywhere {root, "archive", true}, {root + "/Project-A", "archive", true}, {root + "/Project-A/Working", "archive", true}, {root + "/Project-A/Outgoing", "archive", true}, // landing: only at root {root, "landing", true}, {root + "/Project-A", "landing", false}, // classifier: Incoming/Working/Staging and subtrees {root, "classifier", false}, {root + "/Project-A", "classifier", false}, {root + "/Project-A/Incoming", "classifier", true}, {root + "/Project-A/Incoming/SubDir", "classifier", true}, {root + "/Project-A/Working", "classifier", true}, {root + "/Project-A/Staging", "classifier", true}, {root + "/Project-A/Outgoing", "classifier", false}, {root + "/Project-A/Working/deep/nested/path", "classifier", true}, // mdedit: Working only {root + "/Project-A/Working", "mdedit", true}, {root + "/Project-A/Working/SubDir", "mdedit", true}, {root + "/Project-A/Incoming", "mdedit", false}, {root + "/Project-A/Staging", "mdedit", false}, // transmittal: Staging only {root + "/Project-A/Staging", "transmittal", true}, {root + "/Project-A/Staging/SubDir", "transmittal", true}, {root + "/Project-A/Incoming", "transmittal", false}, {root + "/Project-A/Working", "transmittal", false}, // case-sensitivity: lowercase doesn't match {root + "/Project-A/working", "mdedit", false}, {root + "/Project-A/staging", "transmittal", false}, // unknown app {root + "/Project-A", "weird", false}, } for _, tc := range cases { t.Run(tc.app+"@"+tc.dir, func(t *testing.T) { got := AppAvailableAt(root, filepath.Clean(tc.dir), tc.app) if got != tc.want { t.Errorf("AppAvailableAt(%q, %q) = %v, want %v", tc.dir, tc.app, got, tc.want) } }) } }