func main() { r := gin.Default() api := api2go.NewAPIWithRouting( "v0", api2go.NewStaticResolver("/"), gingonic.New(r), ) db, err := storage.InitDB() if err != nil { panic(err) } defer db.Close() userStorage := storage.NewUserStorage(db) chocStorage := storage.NewChocolateStorage(db) api.AddResource(model.User{}, resource.UserResource{ChocStorage: chocStorage, UserStorage: userStorage}) api.AddResource(model.Chocolate{}, resource.ChocolateResource{ChocStorage: chocStorage, UserStorage: userStorage}) r.GET("/ping", func(c *gin.Context) { c.String(200, "pong") }) r.Run(":31415") // listen and serve on 0.0.0.0:31415 }
) // there are a lot of functions because each test can be run individually and sets up the complete // environment. That is because we run all the specs randomized. var _ = Describe("CrudExample", func() { var rec *httptest.ResponseRecorder var db *gorm.DB BeforeEach(func() { api = api2go.NewAPIWithBaseURL("v0", "http://localhost:31415") var err error db, err = storage.InitDB() if err != nil { panic(err) } userStorage := storage.NewUserStorage(db) chocStorage := storage.NewChocolateStorage(db) api.AddResource(model.User{}, resource.UserResource{ChocStorage: chocStorage, UserStorage: userStorage}) api.AddResource(model.Chocolate{}, resource.ChocolateResource{ChocStorage: chocStorage, UserStorage: userStorage}) rec = httptest.NewRecorder() }) AfterEach(func() { db.Exec("DROP TABLE chocolates") db.Exec("DROP TABLE users") db.Close() }) var createUser = func() { rec = httptest.NewRecorder() req, err := http.NewRequest("POST", "/v0/users", strings.NewReader(` {