package service import ( "errors" "testing" "github.com/wmms/wmms/internal/model" ) func TestOrganizationScopedServicesRejectInvalidOrganization(t *testing.T) { master := NewMasterDataService() partners := NewPartnerService() warehouses := NewWarehouseService() for _, id := range []int64{0, -1} { checks := map[string]func() error{ "categories list": func() error { _, err := master.ListCategories(id); return err }, "categories create": func() error { return master.CreateCategory(&model.MaterialCategory{OrganizationID: id}) }, "categories update": func() error { return master.UpdateCategory(&model.MaterialCategory{OrganizationID: id}) }, "units list": func() error { _, err := master.ListUnits(id); return err }, "units create": func() error { return master.CreateUnit(&model.Unit{OrganizationID: id}) }, "units update": func() error { return master.UpdateUnit(&model.Unit{OrganizationID: id}) }, "rules list": func() error { _, err := master.ListCodeRules(id); return err }, "rules preview": func() error { _, err := master.NextMaterialCode(id, 1); return err }, "rules create": func() error { return master.CreateCodeRule(&model.CodeRule{OrganizationID: id}) }, "rules update": func() error { return master.UpdateCodeRule(&model.CodeRule{OrganizationID: id}) }, "partners list": func() error { _, _, err := partners.List(id, "", 20, 0, ""); return err }, "partners create": func() error { return partners.Create(&model.BusinessPartner{OrganizationID: id}) }, "partners update": func() error { return partners.Update(&model.BusinessPartner{OrganizationID: id}) }, "warehouses list": func() error { _, err := warehouses.List(id); return err }, "warehouses create": func() error { return warehouses.Create(&model.Warehouse{OrganizationID: id}) }, "warehouses update": func() error { return warehouses.Update(&model.Warehouse{OrganizationID: id}) }, "locations create": func() error { return warehouses.CreateLocation(&model.WarehouseLocation{}, id) }, "locations update": func() error { return warehouses.UpdateLocation(&model.WarehouseLocation{}, id) }, "material create": func() error { _, err := NewMaterialService().Create(&model.CreateMaterialRequest{OrganizationID: id}, "tester") return err }, } for name, check := range checks { t.Run(name, func(t *testing.T) { if err := check(); !errors.Is(err, ErrInvalidOrganizationID) { t.Fatalf("error=%v", err) } }) } } }