107 lines
2.8 KiB
Go
107 lines
2.8 KiB
Go
|
|
package woogo
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/brianvoe/gofakeit/v6"
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestProductService_All(t *testing.T) {
|
||
|
|
params := ProductsQueryParams{}
|
||
|
|
items, _, _, _, err := wooClient.Services.Product.All(params)
|
||
|
|
if err != nil {
|
||
|
|
t.Errorf("wooClient.Services.Product.All: %s", err.Error())
|
||
|
|
} else {
|
||
|
|
if len(items) > 0 {
|
||
|
|
mainId = items[0].ID
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProductService_One(t *testing.T) {
|
||
|
|
t.Run("TestProductService_All", TestProductService_All)
|
||
|
|
product, err := wooClient.Services.Product.One(mainId)
|
||
|
|
if err != nil {
|
||
|
|
t.Errorf("wooClient.Services.Product.One: %s", err.Error())
|
||
|
|
} else {
|
||
|
|
assert.Equal(t, mainId, product.ID, "product id")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProductService_CreateUpdateDelete(t *testing.T) {
|
||
|
|
name := gofakeit.Word()
|
||
|
|
req := CreateProductRequest{
|
||
|
|
Name: name,
|
||
|
|
}
|
||
|
|
item, err := wooClient.Services.Product.Create(req)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Create error: %s", err.Error())
|
||
|
|
}
|
||
|
|
productId := item.ID
|
||
|
|
assert.Equal(t, name, item.Name, "product name")
|
||
|
|
name = gofakeit.Word()
|
||
|
|
updateReq := UpdateProductRequest{
|
||
|
|
Name: name,
|
||
|
|
}
|
||
|
|
_, err = wooClient.Services.Product.Update(productId, updateReq)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Update error: %s", err.Error())
|
||
|
|
}
|
||
|
|
item, err = wooClient.Services.Product.One(productId)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.One error: %s", err.Error())
|
||
|
|
}
|
||
|
|
assert.Equal(t, name, item.Name, "product name")
|
||
|
|
|
||
|
|
// Delete
|
||
|
|
_, err = wooClient.Services.Product.Delete(productId, true)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Delete error: %s", err.Error())
|
||
|
|
}
|
||
|
|
_, err = wooClient.Services.Product.One(productId)
|
||
|
|
if !errors.Is(err, ErrNotFound) {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Delete(%d) failed", productId)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProductService_All_Filter(t *testing.T) {
|
||
|
|
name := gofakeit.Word()
|
||
|
|
sku := "SKU WITH SPACES"
|
||
|
|
|
||
|
|
req := CreateProductRequest{
|
||
|
|
Name: name,
|
||
|
|
SKU: sku,
|
||
|
|
}
|
||
|
|
item, err := wooClient.Services.Product.Create(req)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Create error: %s", err.Error())
|
||
|
|
}
|
||
|
|
productId := item.ID
|
||
|
|
assert.Equal(t, name, item.Name, "product name")
|
||
|
|
name = gofakeit.Word()
|
||
|
|
|
||
|
|
params := ProductsQueryParams{
|
||
|
|
SKU: sku,
|
||
|
|
}
|
||
|
|
items, _, _, _, err := wooClient.Services.Product.All(params)
|
||
|
|
if err != nil {
|
||
|
|
t.Errorf("wooClient.Services.Product.All: %s", err.Error())
|
||
|
|
} else {
|
||
|
|
if len(items) == 0 {
|
||
|
|
t.Fatalf("wooClient.Services.Product.All error")
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Delete
|
||
|
|
_, err = wooClient.Services.Product.Delete(productId, true)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Delete error: %s", err.Error())
|
||
|
|
}
|
||
|
|
_, err = wooClient.Services.Product.One(productId)
|
||
|
|
if !errors.Is(err, ErrNotFound) {
|
||
|
|
t.Fatalf("wooClient.Services.Product.Delete(%d) failed", productId)
|
||
|
|
}
|
||
|
|
}
|