func TestFaqs(t *testing.T) { var f faq_model.Faq var err error dtx, err := apicontextmock.Mock() if err != nil { t.Log(err) } Convey("Test Faqs", t, func() { //test create form := url.Values{"question": {"test"}, "answer": {"testAnswer"}} v := form.Encode() body := strings.NewReader(v) testThatHttp.Request("post", "/faqs", "", "", Create, body, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &f) So(f, ShouldHaveSameTypeAs, faq_model.Faq{}) //test update form = url.Values{"question": {"test new"}, "answer": {"testAnswer new"}} v = form.Encode() body = strings.NewReader(v) testThatHttp.RequestWithDtx("put", "/faqs/", ":id", strconv.Itoa(f.ID), Update, body, "application/x-www-form-urlencoded", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &f) So(f, ShouldHaveSameTypeAs, faq_model.Faq{}) //test get testThatHttp.RequestWithDtx("get", "/faqs/", ":id", strconv.Itoa(f.ID), Get, nil, "application/x-www-form-urlencoded", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &f) So(f, ShouldHaveSameTypeAs, faq_model.Faq{}) So(f.Question, ShouldEqual, "test new") //test getall testThatHttp.Request("get", "/faqs", "", "", GetAll, nil, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) var fs faq_model.Faqs err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &fs) So(len(fs), ShouldBeGreaterThanOrEqualTo, 0) //test search - responds w/ horrid pagination object testThatHttp.Request("get", "/faqs/search", "", "?question=test new", Search, nil, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) var l pagination.Objects err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &l) So(len(l.Objects), ShouldBeGreaterThanOrEqualTo, 0) //test delete testThatHttp.Request("delete", "/faqs/", ":id", strconv.Itoa(f.ID), Delete, nil, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &f) So(f, ShouldHaveSameTypeAs, faq_model.Faq{}) }) _ = apicontextmock.DeMock(dtx) }
func TestBlog(t *testing.T) { var b blog_model.Blog var bc blog_model.BlogCategory var err error dtx, err := apicontextmock.Mock() if err != nil { t.Log(err) } Convey("Testing Blog", t, func() { //test create blog cats form := url.Values{"name": {"test cat"}, "slug": {"a slug here"}} v := form.Encode() body := strings.NewReader(v) testThatHttp.Request("post", "/blogs/categories", "", "", CreateBlogCategory, body, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bc) So(err, ShouldBeNil) So(bc, ShouldHaveSameTypeAs, blog_model.BlogCategory{}) //test create blog form = url.Values{"title": {"test"}, "slug": {"a slug"}, "texts": {"some text here"}, "categoryID": {strconv.Itoa(bc.ID)}} v = form.Encode() body = strings.NewReader(v) testThatHttp.RequestWithDtx("post", "/blogs", "", "", CreateBlog, body, "application/x-www-form-urlencoded", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &b) So(err, ShouldBeNil) So(b, ShouldHaveSameTypeAs, blog_model.Blog{}) //test get blogs testThatHttp.Request("get", "/blog", "", "", GetAll, nil, "application/x-www-form-urlencoded") var bs blog_model.Blogs So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bs) So(len(bs), ShouldBeGreaterThanOrEqualTo, 0) So(err, ShouldBeNil) //test get blog testThatHttp.Request("get", "/blog/", ":id", strconv.Itoa(b.ID), GetBlog, nil, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &b) So(b, ShouldHaveSameTypeAs, blog_model.Blog{}) So(err, ShouldBeNil) So(b.Title, ShouldEqual, "test") //test get blog cats testThatHttp.RequestWithDtx("get", "/blog/categories", "", "", GetAllCategories, nil, "application/x-www-form-urlencoded", dtx) var bcs blog_model.BlogCategories So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bcs) So(len(bcs), ShouldBeGreaterThanOrEqualTo, 0) So(err, ShouldBeNil) //test get blog cat testThatHttp.RequestWithDtx("get", "/blog/category/", ":id", strconv.Itoa(bc.ID), GetBlogCategory, nil, "application/x-www-form-urlencoded", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bc) So(bc, ShouldHaveSameTypeAs, blog_model.BlogCategory{}) So(err, ShouldBeNil) //test search testThatHttp.RequestWithDtx("get", "/blog/search/", "", "?title="+b.Title, Search, nil, "application/x-www-form-urlencoded", dtx) var l pagination.Objects So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &l) So(len(l.Objects), ShouldBeGreaterThanOrEqualTo, 0) So(err, ShouldBeNil) //test update blog form = url.Values{"name": {"test cat"}, "slug": {"a slug here"}} v = form.Encode() body = strings.NewReader(v) testThatHttp.Request("put", "/blogs/", ":id", strconv.Itoa(b.ID), UpdateBlog, body, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &b) So(err, ShouldBeNil) So(b, ShouldHaveSameTypeAs, blog_model.Blog{}) //test delete blog cat testThatHttp.Request("delete", "/blog/categories/", ":id", strconv.Itoa(bc.ID), DeleteBlogCategory, nil, "application/x-www-form-urlencoded") So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bc) So(err, ShouldBeNil) //test delete blog testThatHttp.RequestWithDtx("delete", "/blog/", ":id", strconv.Itoa(b.ID), DeleteBlog, nil, "application/x-www-form-urlencoded", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &b) So(err, ShouldBeNil) }) _ = apicontextmock.DeMock(dtx) }
func TestForums(t *testing.T) { var err error var g forum.Group var to forum.Topic var th forum.Thread var p forum.Post var gs forum.Groups var tos forum.Topics var ths forum.Threads var ps forum.Posts dtx, err := apicontextmock.Mock() if err != nil { t.Log(err) } Convey("Testing Forums", t, func() { //test add group form := url.Values{"name": {"Posts About Ponies"}, "description": {"The wonderful world of ponies."}} v := form.Encode() body := strings.NewReader(v) thyme := time.Now() testThatHttp.RequestWithDtx("post", "/forum/groups", "", "?key="+dtx.APIKey, AddGroup, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &g) So(err, ShouldBeNil) So(g, ShouldHaveSameTypeAs, forum.Group{}) So(g.ID, ShouldBeGreaterThan, 0) //test add topic form = url.Values{"name": {"The Prettiest Ponies"}, "description": {"We rank them by mane."}, "closed": {"false"}, "groupID": {strconv.Itoa(g.ID)}} v = form.Encode() body = strings.NewReader(v) thyme = time.Now() testThatHttp.RequestWithDtx("post", "/forum/topics", "", "?key="+dtx.APIKey, AddTopic, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &to) So(err, ShouldBeNil) So(to, ShouldHaveSameTypeAs, forum.Topic{}) So(to.ID, ShouldBeGreaterThan, 0) //test add post form = url.Values{"title": {"Ponies"}, "post": {"I like pink and yellow ones the best."}, "name": {"Michael Jordan"}, "topicID": {strconv.Itoa(to.ID)}} v = form.Encode() body = strings.NewReader(v) thyme = time.Now() testThatHttp.RequestWithDtx("post", "/forum/posts", "", "?key="+dtx.APIKey, AddPost, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, forum.Post{}) So(p.ID, ShouldBeGreaterThan, 0) //test update group form = url.Values{"description": {"Ponies are exciting"}} v = form.Encode() body = strings.NewReader(v) thyme = time.Now() testThatHttp.RequestWithDtx("put", "/forum/groups/", ":id", strconv.Itoa(g.ID)+"?key="+dtx.APIKey, UpdateGroup, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &g) So(err, ShouldBeNil) So(g, ShouldHaveSameTypeAs, forum.Group{}) So(g.Description, ShouldNotEqual, "The wonderful world of ponies.") //test update topic form = url.Values{"description": {"We rank them by mane color."}, "closed": {"false"}, "groupID": {strconv.Itoa(g.ID)}, "active": {"true"}} v = form.Encode() body = strings.NewReader(v) thyme = time.Now() testThatHttp.RequestWithDtx("put", "/forum/topics/", ":id", strconv.Itoa(to.ID)+"?key="+dtx.APIKey, UpdateTopic, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &to) So(err, ShouldBeNil) So(to, ShouldHaveSameTypeAs, forum.Topic{}) So(to.Description, ShouldNotEqual, "We rank them by mane.") //test update post form = url.Values{"title": {"Ponies"}, "post": {"I like pink and yellow ones the best."}, "name": {"Michael Jordan"}, "topicID": {strconv.Itoa(to.ID)}} v = form.Encode() body = strings.NewReader(v) thyme = time.Now() testThatHttp.RequestWithDtx("put", "/forum/posts/", ":id", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, UpdatePost, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, forum.Post{}) So(p.ID, ShouldBeGreaterThan, 0) //test get group thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/groups/", ":id", strconv.Itoa(g.ID)+"?key="+dtx.APIKey, GetGroup, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &g) So(err, ShouldBeNil) So(g, ShouldHaveSameTypeAs, forum.Group{}) //test get all groups thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/groups", "", "?key="+dtx.APIKey, GetAllGroups, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &gs) So(err, ShouldBeNil) So(gs, ShouldHaveSameTypeAs, forum.Groups{}) So(len(gs), ShouldBeGreaterThan, 0) //test get topic thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/topics/", ":id", strconv.Itoa(to.ID)+"?key="+dtx.APIKey, GetTopic, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &to) So(err, ShouldBeNil) So(to, ShouldHaveSameTypeAs, forum.Topic{}) //test get all topics thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/topics", "", "?key="+dtx.APIKey, GetAllTopics, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &tos) So(err, ShouldBeNil) So(tos, ShouldHaveSameTypeAs, forum.Topics{}) So(len(tos), ShouldBeGreaterThan, 0) //test get thread thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/threads/", ":id", strconv.Itoa(p.ThreadID)+"?key="+dtx.APIKey, GetThread, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &th) So(err, ShouldBeNil) So(th, ShouldHaveSameTypeAs, forum.Thread{}) //test get all threads thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/threads", "", "?key="+dtx.APIKey, GetAllThreads, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &ths) So(err, ShouldBeNil) So(ths, ShouldHaveSameTypeAs, forum.Threads{}) So(len(ths), ShouldBeGreaterThan, 0) //test get post thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/posts/", ":id", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, GetPost, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, forum.Post{}) //test get all posts thyme = time.Now() testThatHttp.RequestWithDtx("get", "/forum/posts", "", "?key="+dtx.APIKey, GetAllPosts, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &ps) So(err, ShouldBeNil) So(ps, ShouldHaveSameTypeAs, forum.Posts{}) So(len(ps), ShouldBeGreaterThan, 0) //test delete post thyme = time.Now() testThatHttp.RequestWithDtx("delete", "/forum/posts/", ":id", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, DeletePost, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, forum.Post{}) //test delete thread thyme = time.Now() testThatHttp.RequestWithDtx("delete", "/forum/threads/", ":id", strconv.Itoa(th.ID)+"?key="+dtx.APIKey, DeleteThread, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &th) So(err, ShouldBeNil) So(th, ShouldHaveSameTypeAs, forum.Thread{}) //test delete topic thyme = time.Now() testThatHttp.RequestWithDtx("delete", "/forum/topics/", ":id", strconv.Itoa(to.ID)+"?key="+dtx.APIKey, DeleteTopic, body, "application/x-www-form-urlencoded", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &to) So(err, ShouldBeNil) So(to, ShouldHaveSameTypeAs, forum.Topic{}) //test delete group thyme = time.Now() testThatHttp.RequestWithDtx("delete", "/forum/groups/", ":id", strconv.Itoa(g.ID)+"?key="+dtx.APIKey, DeleteGroup, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &g) So(err, ShouldBeNil) So(g, ShouldHaveSameTypeAs, forum.Group{}) }) _ = apicontextmock.DeMock(dtx) }
func TestCustomer(t *testing.T) { var err error var c customer.Customer var cu customer.CustomerUser once.Do(initDtx) defer apicontextmock.DeMock(dtx) cu.Id = dtx.UserID err = cu.Get(dtx.APIKey) if err != nil { t.Log(err) } c.Users = append(c.Users, cu) Convey("Testing customer/Customer", t, func() { //test create customer c.Name = "Jason Voorhees" c.Email = "*****@*****.**" bodyBytes, _ := json.Marshal(c) bodyJson := bytes.NewReader(bodyBytes) thyme := time.Now() testThatHttp.Request("put", "/customer", "", "?key=", SaveCustomer, bodyJson, "application/json") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &c) So(err, ShouldBeNil) So(c, ShouldHaveSameTypeAs, customer.Customer{}) So(c.Id, ShouldBeGreaterThan, 0) //test update customer c.Fax = "666-1313" c.State.Id = 1 bodyBytes, _ = json.Marshal(c) bodyJson = bytes.NewReader(bodyBytes) thyme = time.Now() testThatHttp.Request("put", "/customer/", ":id", strconv.Itoa(c.Id)+"?key=", SaveCustomer, bodyJson, "application/json") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &c) So(err, ShouldBeNil) So(c, ShouldHaveSameTypeAs, customer.Customer{}) So(c.Id, ShouldBeGreaterThan, 0) thyme = time.Now() testThatHttp.RequestWithDtx("post", "/customer", "", "?key=", GetCustomer, nil, "", dtx) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &c) So(err, ShouldBeNil) So(c, ShouldHaveSameTypeAs, customer.Customer{}) So(c.Id, ShouldBeGreaterThan, 0) // get customer locations thyme = time.Now() testThatHttp.RequestWithDtx("get", "/customer/locations", "", "?key=", GetLocations, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*6) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &c.Locations) So(err, ShouldBeNil) So(c.Locations, ShouldHaveSameTypeAs, []customer.CustomerLocation{}) // //get user thyme = time.Now() testThatHttp.RequestWithDtx("post", "/customer/user", "", "?key="+dtx.APIKey, GetUser, nil, "", nil) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &cu) So(err, ShouldBeNil) So(cu, ShouldHaveSameTypeAs, customer.CustomerUser{}) //get users thyme = time.Now() testThatHttp.RequestWithDtx("get", "/customer/users", "", "?key=", GetUsers, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*5) So(testThatHttp.Response.Code, ShouldEqual, 200) var cus []customer.CustomerUser err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &cus) So(err, ShouldBeNil) So(cus, ShouldHaveSameTypeAs, []customer.CustomerUser{}) // get customer price // price.CustID = c.Id // price.Create() // thyme = time.Now() // testThatHttp.Request("get", "/new/customer/price/", ":id", strconv.Itoa(p.ID)+"?key="+apiKey, GetCustomerPrice, nil, "") // So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) // So(testThatHttp.Response.Code, ShouldEqual, 200) // var price float64 // err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &price) // So(err, ShouldBeNil) // So(price, ShouldHaveSameTypeAs, 7.1) // //get customer cart reference // ci.CustID = c.Id // ci.Create() // thyme = time.Now() // testThatHttp.Request("get", "/new/customer/cartRef/", ":id", strconv.Itoa(p.ID)+"?key="+apiKey, GetCustomerCartReference, nil, "") // So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) // So(testThatHttp.Response.Code, ShouldEqual, 200) // var reference int // err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &reference) // So(err, ShouldBeNil) // So(reference, ShouldHaveSameTypeAs, 7) //test delete customer thyme = time.Now() testThatHttp.Request("delete", "/customer/", ":id", strconv.Itoa(c.Id)+"?key=", DeleteCustomer, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &c) So(err, ShouldBeNil) So(c, ShouldHaveSameTypeAs, customer.Customer{}) So(c.Id, ShouldBeGreaterThan, 0) }) //cleanup err = cu.Delete() err = c.Delete() }
func TestDealers_New(t *testing.T) { var err error var c customer.Customer var cs customer.Customers var loc customer.CustomerLocation var locs customer.CustomerLocations dtx, err := apicontextmock.Mock() if err != nil { t.Log(err) } //setup lcoation for getById loc.Address = "123 Test Ave." loc.Create(dtx) Convey("Testing Dealers_New", t, func() { //test get etailers thyme := time.Now() testThatHttp.RequestWithDtx("get", "/dealers/etailer", "", "?key="+dtx.APIKey, GetEtailers, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &cs) So(err, ShouldBeNil) So(cs, ShouldHaveSameTypeAs, customer.Customers{}) So(len(cs), ShouldBeGreaterThanOrEqualTo, 0) //test get local dealers thyme = time.Now() testThatHttp.Request("get", "/dealers/local", "", "?key="+dtx.APIKey+"&latlng=43.853282,-95.571675,45.800981,-90.468526¢er=44.83536,-93.0201", GetLocalDealers, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var dls customer.DealerLocations err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &dls) So(err, ShouldBeNil) So(dls, ShouldHaveSameTypeAs, customer.DealerLocations{}) //test get local dealers thyme = time.Now() testThatHttp.Request("get", "/dealers/local/regions", "", "?key="+dtx.APIKey, GetLocalRegions, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*5) //Long test So(testThatHttp.Response.Code, ShouldEqual, 200) var stateRegions []customer.StateRegion err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &stateRegions) So(err, ShouldBeNil) So(stateRegions, ShouldHaveSameTypeAs, []customer.StateRegion{}) //test get dealerTypes thyme = time.Now() testThatHttp.Request("get", "/dealers/local/types", "", "?key="+dtx.APIKey, GetLocalDealerTypes, nil, "") So(testThatHttp.Response.Code, ShouldEqual, 200) var types []customer.DealerType err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &types) So(err, ShouldBeNil) So(types, ShouldHaveSameTypeAs, []customer.DealerType{}) //test get dealerTiers thyme = time.Now() testThatHttp.Request("get", "/dealers/local/tiers", "", "?key="+dtx.APIKey, GetLocalDealerTiers, nil, "") So(testThatHttp.Response.Code, ShouldEqual, 200) var tiers []customer.DealerTier err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &tiers) So(err, ShouldBeNil) So(tiers, ShouldHaveSameTypeAs, []customer.DealerTier{}) //test get dealerTiers thyme = time.Now() testThatHttp.Request("get", "/dealers/etailer/platinum", "", "?key="+dtx.APIKey, PlatinumEtailers, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &cs) So(err, ShouldBeNil) So(cs, ShouldHaveSameTypeAs, customer.Customers{}) //test get location by id thyme = time.Now() testThatHttp.Request("get", "/dealers/location/", ":id", strconv.Itoa(loc.Id)+"?key="+dtx.APIKey, GetLocationById, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &loc) So(err, ShouldBeNil) So(loc, ShouldHaveSameTypeAs, customer.CustomerLocation{}) //test get all business classes thyme = time.Now() testThatHttp.Request("get", "/dealers/business/classes", "", "?key="+dtx.APIKey, GetAllBusinessClasses, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var bcs customer.BusinessClasses err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &bcs) So(err, ShouldBeNil) So(bcs, ShouldHaveSameTypeAs, customer.BusinessClasses{}) //test search Locations thyme = time.Now() testThatHttp.Request("get", "/dealers/search/", ":search", "test?key="+dtx.APIKey, SearchLocations, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &locs) So(err, ShouldBeNil) So(locs, ShouldHaveSameTypeAs, customer.CustomerLocations{}) //test search Locations by type thyme = time.Now() testThatHttp.Request("get", "/dealers/search/type/", ":search", "test?key="+dtx.APIKey, SearchLocationsByType, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &locs) So(err, ShouldBeNil) So(locs, ShouldHaveSameTypeAs, customer.CustomerLocations{}) //test search Locations by lat long thyme = time.Now() testThatHttp.Request("get", "/dealers/search/geo/", ":latitude/:longitude", fmt.Sprint(c.Latitude)+"/"+fmt.Sprint(c.Longitude)+"?key="+dtx.APIKey, SearchLocationsByType, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*2) So(testThatHttp.Response.Code, ShouldEqual, 200) So(testThatHttp.Response, ShouldNotBeNil) So(testThatHttp.Response.Body, ShouldNotBeNil) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &dls) So(err, ShouldBeNil) So(dls, ShouldHaveSameTypeAs, customer.DealerLocations{}) }) //teardown loc.Delete(dtx) _ = apicontextmock.DeMock(dtx) }
func TestParts(t *testing.T) { var err error var p products.Part p.ID = 10999 //set part number here for use in creating related objects var price products.Price // var cu customer.CustomerUser var cat products.Category cat.Create() //create install sheet content type var contentType custcontent.ContentType contentType.Type = "InstallationSheet" err = contentType.Create() //create install sheet content var installSheetContent products.Content installSheetContent.Text = "https://www.curtmfg.com/masterlibrary/13201/installsheet/CM_13201_INS.PDF" installSheetContent.ContentType.Id = contentType.Id err = installSheetContent.Create() //create video type -- used in creating video during video test var vt video.VideoType vt.Name = "test type" vt.Create() //key types var pub, pri, auth apiKeyType.ApiKeyType if database.GetCleanDBFlag() != "" { //setup apiKeyTypes pub.Type = "public" pri.Type = "private" auth.Type = "authentication" pub.Create() pri.Create() auth.Create() } dtx, err := apicontextmock.Mock() if err != nil { t.Log(err) } Convey("TestingParts", t, func() { //test create part p.Categories = append(p.Categories, cat) p.OldPartNumber = "8675309" p.ShortDesc = "test part" p.Content = append(p.Content, installSheetContent) bodyBytes, _ := json.Marshal(p) bodyJson := bytes.NewReader(bodyBytes) thyme := time.Now() testThatHttp.RequestWithDtx("post", "/part", "", "?key="+dtx.APIKey, CreatePart, bodyJson, "application/json", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, products.Part{}) So(p.ID, ShouldEqual, 10999) p.BindCustomer(dtx) var custPrice customer.Price custPrice.CustID = dtx.CustomerID custPrice.PartID = p.ID err = custPrice.Create() //test create price price.Price = 987 price.PartId = p.ID price.Type = "test" bodyBytes, _ = json.Marshal(price) bodyJson = bytes.NewReader(bodyBytes) thyme = time.Now() testThatHttp.RequestWithDtx("post", "/price", "", "?key="+dtx.APIKey, SavePrice, bodyJson, "application/json", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &price) So(err, ShouldBeNil) So(price, ShouldHaveSameTypeAs, products.Price{}) So(price.Id, ShouldBeGreaterThan, 0) //test update price price.Type = "tester" bodyBytes, _ = json.Marshal(price) bodyJson = bytes.NewReader(bodyBytes) thyme = time.Now() testThatHttp.RequestWithDtx("post", "/price/", ":id", strconv.Itoa(price.Id)+"?key="+dtx.APIKey, SavePrice, bodyJson, "application/json", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &price) So(err, ShouldBeNil) So(price, ShouldHaveSameTypeAs, products.Price{}) So(price.Type, ShouldNotEqual, "test") // //test get part prices thyme = time.Now() testThatHttp.RequestWithDtx("get", "/part/", ":part/prices", strconv.Itoa(p.ID)+"/prices?key="+dtx.APIKey, Prices, nil, "", dtx) So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var prices []products.Price err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &prices) So(err, ShouldBeNil) So(prices, ShouldHaveSameTypeAs, []products.Price{}) // //test get part categories thyme = time.Now() testThatHttp.Request("get", "/part/", ":part/categories", strconv.Itoa(p.ID)+"/categories?key="+dtx.APIKey, Categories, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var cats []products.Category err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &cats) So(err, ShouldBeNil) So(cats, ShouldHaveSameTypeAs, []products.Category{}) //test get part install sheet thyme = time.Now() testThatHttp.Request("get", "/part/", ":part", strconv.Itoa(p.ID)+".pdf?key="+dtx.APIKey, InstallSheet, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*6) //three seconds So(testThatHttp.Response.Code, ShouldEqual, 200) //test get videos //create part video var partVid video.Video err = partVid.Create(dtx) err = partVid.CreateJoinPart(p.ID) thyme = time.Now() testThatHttp.Request("get", "/part/videos/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Videos, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var ps []products.PartVideo err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &ps) So(err, ShouldBeNil) So(len(ps), ShouldBeGreaterThan, 0) //get active approved reviews //create active approved review var review products.Review review.PartID = p.ID review.Rating = 1 review.Active = true review.Approved = true err = review.Create(dtx) thyme = time.Now() testThatHttp.Request("get", "/part/reviews/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, ActiveApprovedReviews, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var reviews products.Reviews err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &reviews) So(err, ShouldBeNil) So(len(reviews), ShouldBeGreaterThan, 0) review.Delete(dtx) //teardown - part has FK constraint on review.partID //get packaging - no package created in test thyme = time.Now() testThatHttp.Request("get", "/part/packages/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Packaging, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var pack []products.Package err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &pack) So(err, ShouldBeNil) So(pack, ShouldHaveSameTypeAs, []products.Package{}) //get content thyme = time.Now() testThatHttp.Request("get", "/part/content/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, GetContent, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var content products.Content err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &content) So(err, ShouldBeNil) So(content, ShouldHaveSameTypeAs, products.Content{}) //get attributes thyme = time.Now() testThatHttp.Request("get", "/part/attributes/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Attributes, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var attributes []products.Attribute err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &attributes) So(err, ShouldBeNil) So(attributes, ShouldHaveSameTypeAs, []products.Attribute{}) //test get images thyme = time.Now() testThatHttp.Request("get", "/part/images/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Images, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var images []products.Image err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &images) So(err, ShouldBeNil) So(images, ShouldHaveSameTypeAs, []products.Image{}) //test get vehicles thyme = time.Now() testThatHttp.Request("get", "/part/vehicles/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Vehicles, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var vs []products.Vehicle err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &vs) So(err, ShouldBeNil) So(vs, ShouldHaveSameTypeAs, []products.Vehicle{}) //test get related thyme = time.Now() testThatHttp.Request("get", "/part/related/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, GetRelated, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) var parts []products.Part err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &parts) So(err, ShouldBeNil) So(parts, ShouldHaveSameTypeAs, []products.Part{}) //test get thyme = time.Now() t.Log(strconv.Itoa(p.ID)) testThatHttp.Request("get", "/part/", ":part", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, Get, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()) So(testThatHttp.Response.Code, ShouldEqual, 200) var part products.Part err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &part) So(err, ShouldBeNil) So(part, ShouldHaveSameTypeAs, products.Part{}) //test latest thyme = time.Now() testThatHttp.Request("get", "/part/latest", "", "?key="+dtx.APIKey, Latest, nil, "") t.Log("Get latest parts benchmark: ", time.Since(thyme)) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &parts) So(err, ShouldBeNil) So(parts, ShouldHaveSameTypeAs, []products.Part{}) // test all thyme = time.Now() testThatHttp.Request("get", "/part/all", "", "?key="+dtx.APIKey, AllBasics, nil, "") t.Log("Get all basic parts benchmark: ", time.Since(thyme)) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &parts) So(err, ShouldBeNil) So(parts, ShouldHaveSameTypeAs, []products.Part{}) //test featured thyme = time.Now() testThatHttp.Request("get", "/part/featured", "", "?key="+dtx.APIKey, Featured, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*3) //3 seconds! t.Log("Get featured parts benchmark: ", time.Since(thyme)) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &parts) So(err, ShouldBeNil) So(parts, ShouldHaveSameTypeAs, []products.Part{}) //test get all parts thyme = time.Now() testThatHttp.Request("get", "/part", "", "?key="+dtx.APIKey, All, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()*6) //6 seconds t.Log("Get all parts benchmark: ", time.Since(thyme)) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &parts) So(err, ShouldBeNil) So(parts, ShouldHaveSameTypeAs, []products.Part{}) //test get price thyme = time.Now() testThatHttp.Request("get", "/price/", ":id", strconv.Itoa(price.Id)+"?key="+dtx.APIKey, GetPrice, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &price) So(err, ShouldBeNil) So(price, ShouldHaveSameTypeAs, products.Price{}) //test get old part Number thyme = time.Now() testThatHttp.Request("get", "/part/old/", ":part", p.OldPartNumber+"?key="+dtx.APIKey, OldPartNumber, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, products.Part{}) So(p.OldPartNumber, ShouldEqual, "8675309") So(p.ID, ShouldEqual, 10999) //test delete price thyme = time.Now() testThatHttp.Request("delete", "/price/", ":id", strconv.Itoa(price.Id)+"?key="+dtx.APIKey, DeletePrice, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &price) So(err, ShouldBeNil) So(price, ShouldHaveSameTypeAs, products.Price{}) //test update part p.OldPartNumber = "8675309" p.InstallSheet, err = url.Parse("www.sheetsrus.com") bodyBytes, _ = json.Marshal(p) bodyJson = bytes.NewReader(bodyBytes) thyme = time.Now() testThatHttp.Request("put", "/part/", ":id", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, UpdatePart, bodyJson, "application/json") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, products.Part{}) So(p.OldPartNumber, ShouldEqual, "8675309") So(p.ID, ShouldEqual, 10999) //test delete part thyme = time.Now() testThatHttp.Request("delete", "/part/", ":id", strconv.Itoa(p.ID)+"?key="+dtx.APIKey, DeletePart, nil, "") So(time.Since(thyme).Nanoseconds(), ShouldBeLessThan, time.Second.Nanoseconds()/2) So(testThatHttp.Response.Code, ShouldEqual, 200) err = json.Unmarshal(testThatHttp.Response.Body.Bytes(), &p) So(err, ShouldBeNil) So(p, ShouldHaveSameTypeAs, products.Part{}) // //teardown custPrice.Delete() partVid.Delete(dtx) partVid.DeleteJoinPart(p.ID) }) //teardown p.Delete(dtx) cat.Delete(dtx) if database.GetCleanDBFlag() != "" { pub.Delete() pri.Delete() auth.Delete() } contentType.Delete() installSheetContent.Delete() vt.Delete() _ = apicontextmock.DeMock(dtx) }