MCPcopy Index your code
hub / github.com/oapi-codegen/oapi-codegen / TestPetStore

Function TestPetStore

examples/petstore-expanded/gin/petstore_test.go:20–140  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

18}
19
20func TestPetStore(t *testing.T) {
21 var err error
22 store := api.NewPetStore()
23 ginPetServer := NewGinPetServer(store, "8080")
24 r := ginPetServer.Handler
25
26 t.Run("Add pet", func(t *testing.T) {
27 tag := "TagOfSpot"
28 newPet := api.NewPet{
29 Name: "Spot",
30 Tag: &tag,
31 }
32
33 rr := testutil.NewRequest().Post("/pets").WithJsonBody(newPet).GoWithHTTPHandler(t, r).Recorder
34 assert.Equal(t, http.StatusCreated, rr.Code)
35
36 var resultPet api.Pet
37 err = json.NewDecoder(rr.Body).Decode(&resultPet)
38 assert.NoError(t, err, "error unmarshaling response")
39 assert.Equal(t, newPet.Name, resultPet.Name)
40 assert.Equal(t, *newPet.Tag, *resultPet.Tag)
41 })
42
43 t.Run("Find pet by ID", func(t *testing.T) {
44 pet := api.Pet{
45 Id: 100,
46 }
47
48 store.Pets[pet.Id] = pet
49 rr := doGet(t, r, fmt.Sprintf("/pets/%d", pet.Id))
50
51 var resultPet api.Pet
52 err = json.NewDecoder(rr.Body).Decode(&resultPet)
53 assert.NoError(t, err, "error getting pet")
54 assert.Equal(t, pet, resultPet)
55 })
56
57 t.Run("Pet not found", func(t *testing.T) {
58 rr := doGet(t, r, "/pets/27179095781")
59 assert.Equal(t, http.StatusNotFound, rr.Code)
60
61 var petError api.Error
62 err = json.NewDecoder(rr.Body).Decode(&petError)
63 assert.NoError(t, err, "error getting response", err)
64 assert.Equal(t, int32(http.StatusNotFound), petError.Code)
65 })
66
67 t.Run("List all pets", func(t *testing.T) {
68 store.Pets = map[int64]api.Pet{1: {}, 2: {}}
69
70 // Now, list all pets, we should have two
71 rr := doGet(t, r, "/pets")
72 assert.Equal(t, http.StatusOK, rr.Code)
73
74 var petList []api.Pet
75 err = json.NewDecoder(rr.Body).Decode(&petList)
76 assert.NoError(t, err, "error getting response", err)
77 assert.Equal(t, 2, len(petList))

Callers

nothing calls this directly

Calls 4

NewPetStoreFunction · 0.92
NewGinPetServerFunction · 0.85
RunMethod · 0.80
doGetFunction · 0.70

Tested by

no test coverage detected