package client import ( "context" "net/http" "testing" ) func TestSpeciesTaskTemplateClientPaths(t *testing.T) { handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") switch { case r.Method == http.MethodPost && r.URL.Path == "/v1/gardens/3/species/2/task-templates": w.WriteHeader(http.StatusCreated) _, _ = w.Write([]byte(`{"task_template":{"id":7,"species_id":2,"title":"Schneiden"}}`)) case r.Method == http.MethodGet && r.URL.Path == "/v1/gardens/3/species/2/task-templates": _, _ = w.Write([]byte(`{"task_templates":[{"id":7,"species_id":2,"title":"Schneiden"}]}`)) case r.Method == http.MethodGet && r.URL.Path == "/v1/gardens/3/species/2/task-templates/7": _, _ = w.Write([]byte(`{"task_template":{"id":7,"species_id":2,"title":"Schneiden"}}`)) case r.Method == http.MethodPatch && r.URL.Path == "/v1/gardens/3/species/2/task-templates/7": _, _ = w.Write([]byte(`{"task_template":{"id":7,"species_id":2,"title":"Schneiden","version":2}}`)) case r.Method == http.MethodDelete && r.URL.Path == "/v1/gardens/3/species/2/task-templates/7": w.WriteHeader(http.StatusNoContent) default: http.NotFound(w, r) } }) apiClient := newTestClient(t, handler) title := "Schneiden" if value, _, err := apiClient.CreateSpeciesTaskTemplate(context.Background(), 3, 2, SpeciesTaskTemplateInput{Title: &title}); err != nil || value.ID != 7 { t.Fatalf("create: %+v %v", value, err) } if values, _, err := apiClient.SpeciesTaskTemplates(context.Background(), 3, 2); err != nil || len(values) != 1 { t.Fatalf("list: %+v %v", values, err) } if _, _, err := apiClient.SpeciesTaskTemplate(context.Background(), 3, 2, 7); err != nil { t.Fatal(err) } if value, _, err := apiClient.UpdateSpeciesTaskTemplate(context.Background(), 3, 2, 7, SpeciesTaskTemplateInput{Title: &title}); err != nil || value.Version != 2 { t.Fatalf("update: %+v %v", value, err) } if _, err := apiClient.DeleteSpeciesTaskTemplate(context.Background(), 3, 2, 7); err != nil { t.Fatal(err) } }