func TestUpdateProductInvalidName(t *testing.T) { invalidNames := []string{ "", // empty " ", // whitespaces only " Left space", // non-left-trimmed "Right space ", // non-right-trimmed " Not trimmed ", // non-trimmed } for _, invalidName := range invalidNames { product := data.Product{ ID: 0, Name: generateName("Product"), Price: data.Price{ Vat: 20, Net: 100, Gross: 0, }, } createProduct(&product) product.Name = invalidName err := Error{} resp := putJSON( fmt.Sprintf("%s/products/%d", getURL(), product.ID), product, &err, ) // permit non-400 status in favor of 500 for now; // TODO: allow only 400-status if !(resp.StatusCode == http.StatusBadRequest || resp.StatusCode == http.StatusInternalServerError) { t.Errorf("Got status: %d, expected: %d or %d", resp.StatusCode, http.StatusBadRequest, http.StatusInternalServerError) } if err.Message == "" { t.Error("Got empty error message") } } }