package api import ( "testing" ) func TestDeserializePetJson(t *testing.T) { jsonData := ` { "id": 5, "category": { "id": 6, "name": "test_category" }, "name": "doggie", "photoUrls": [ "photo_url_test" ], "tags": [ { "id": 0, "name": "test_tags" } ], "status": "available" } ` petData, err := deserialsePetJson(jsonData) if err != nil { t.Error(err.Error()) return } if petData.Id != 5 { t.Errorf("Id was incorrect, got: %d, want: %d", petData.Id, 5) } if petData.Name != "doggie" { t.Errorf("Name was incorrect, got: %s, want: %s", petData.Name, "doggie") } if petData.Status != "available" { t.Errorf("Status was incorrect, got: %s, want: %s", petData.Status, "doggie") } if petData.Category.Id != 6 { t.Errorf("Category Id was incorrect, got: %d, want: %d", petData.Category.Id, 6) } if petData.Category.Name != "test_category" { t.Errorf("Category Name was incorrect, got: %s, want: %s", petData.Category.Name, "test_category") } if len(petData.PhotoUrls) != 1 && petData.PhotoUrls[0] != "photo_url_test" { t.Errorf("PhotoUrls was incorrect, length: %d", len(petData.PhotoUrls)) } if len(petData.Tags) != 1 && petData.Tags[0].Id != 0 && petData.Tags[0].Name != "test_tags" { t.Errorf("Tags was incorrect, length: %d", len(petData.Tags)) } } func TestDeserializePetJsonFail(t *testing.T) { jsonData := ` { "invalid": "data" } ` _, err := deserialsePetJson(jsonData) if err == nil { t.Error("Invalid data was provided, expected error was not thrown.") t.Error(err.Error()) } }