package wordpress

import (
	"commerce-crwaler/util"
	"github.com/stretchr/testify/assert"
	"os"
	"testing"
)

func TestGetImages(t *testing.T) {
	body, err := util.Get("https://seoulknit.com/shop/collar-half-sleeved-top_blue/")
	assert.Equal(t, nil, err)
	imgs := getImages(body)
	assert.Equal(t, "https://seoulknit.com/wp-content/uploads/2021/05/abito_0594-scaled-454x681.jpg", imgs[0])
	assert.Equal(t, "https://seoulknit.com/wp-content/uploads/2021/05/abito_0594-scaled-100x100.jpg", imgs[1])

	body, err = util.Get("https://www.dollshecraft.com/product/amanda-beauty-26f-classic-maxi-65cm-special-package-2/")
	assert.Equal(t, nil, err)
	imgs = getImages(body)
	assert.Equal(t, "https://cdn.dollshecraft.com/wp-content/uploads/2018/08/Amanda-Beauty_558743_01.jpg", imgs[0])

	body, err = util.Get("https://www.shoprootscience.com/shop/arctic-c-vitamin-c-serum")
	assert.Equal(t, nil, err)
	imgs = getImages(body)
	assert.Equal(t, "https://www.shoprootscience.com/wp-content/uploads/2020/10/Arctic-C-product-511x634.jpg", imgs[0])
	assert.Equal(t, "https://www.shoprootscience.com/wp-content/uploads/2020/10/Arctic-C-product.jpg", imgs[1])

	body, err = util.Get("https://strandbergguitars.com/product/boden-6-dr-titanium/")
	assert.Equal(t, nil, err)
	imgs = getImages(body)
	assert.Equal(t, "https://strandbergguitars.com/cdn-cgi/image/onerror=redirect,quality=85,format=auto,metadata=copyright,width=600,height=901,fit=cover/wp-content/uploads/2021/04/bd6ct-20dr-k-p-ti_6.png", imgs[0])

	body, err = util.Get("https://lanbelle.com/product/%EB%9E%91%EB%B2%A8-%EC%88%98%ED%8D%BC%EB%82%B4%EC%B8%84%EB%9F%B4-%ED%81%AC%EB%A6%BC/")
	assert.Equal(t, nil, err)
	imgs = getImages(body)
	assert.Equal(t, "https://strandbergguitars.com/cdn-cgi/image/onerror=redirect,quality=85,format=auto,metadata=copyright,width=600,height=901,fit=cover/wp-content/uploads/2021/04/bd6ct-20dr-k-p-ti_6.png", imgs[0])

}

func TestGetPrice(t *testing.T) {
	body, err := util.Get("https://seoulknit.com/shop/collar-half-sleeved-top_blue/")
	assert.Equal(t, nil, err)
	ret := getPrice(body)
	assert.Equal(t, "₩ 59,000", ret)

	body, err = util.Get("https://www.dollshecraft.com/product/amanda-beauty-26f-classic-maxi-65cm-special-package-2/")
	assert.Equal(t, nil, err)
	ret = getPrice(body)
	assert.Equal(t, "$1,450.00", ret)

	body, err = util.Get("https://www.shoprootscience.com/shop/arctic-c-vitamin-c-serum")
	assert.Equal(t, nil, err)
	ret = getPrice(body)
	assert.Equal(t, "$110.00", ret)

	body, err = util.Get("https://strandbergguitars.com/product/boden-6-dr-titanium/")
	assert.Equal(t, nil, err)
	ret = getPrice(body)
	assert.Equal(t, "$2,995.00", ret)
}

func TestGetWordPressProduct(t *testing.T) {
	body, err := util.Get("https://seoulknit.com/shop/collar-half-sleeved-top_blue/")
	assert.Equal(t, nil, err)
	ret := getProduct(body)
	assert.Equal(t, ret.Sku, float64(5677))

	body, err = util.Get("https://www.shoprootscience.com/shop/arctic-c-vitamin-c-serum")
	assert.Equal(t, nil, err)
	ret = getProduct(body)
	assert.Equal(t, ret.Sku, "FS-ARCC-30")

	body, err = util.Get("https://strandbergguitars.com/product/boden-6-dr-titanium/")
	assert.Equal(t, nil, err)
	ret = getProduct(body)
	assert.Equal(t, "BD6CT-20DRB-K-P-TI", ret.Sku)

	t.Run("상품설명", func(t *testing.T) {
		body, err := util.Get("https://www.mehisox.com/shop/sn388/")
		assert.Equal(t, nil, err)
		html := getProductDescription(body)
		os.WriteFile("c:\\temp\\test.html", []byte(html), 0644)
		assert.Equal(t, ``, html)
	})

}

func TestGetCategories(t *testing.T) {
	body, err := util.Get("https://seoulknit.com/shop/collar-half-sleeved-top_blue/")
	assert.Equal(t, nil, err)
	ret := getCategories(body)
	assert.Equal(t, ret, "2021SS, Abito angelico, All, New arrivals, Top")

	body, err = util.Get("https://www.shoprootscience.com/shop/arctic-c-vitamin-c-serum")
	assert.Equal(t, nil, err)
	ret = getCategories(body)
	assert.Equal(t, ret, "Treatments")

	body, err = util.Get("https://shopkeeper.wp-theme.design/shop/hoodies/oversize-drawstring-sweatshirt/")
	assert.Equal(t, nil, err)
	ret = getCategories(body)
	assert.Equal(t, ret, "Hoodies, Jackets, Trousers")
}

func TestGetOptions(t *testing.T) {
	body, err := util.Get("https://seoulknit.com/shop/collar-half-sleeved-top_blue/")
	assert.Equal(t, nil, err)
	ret := getOptions(body)
	assert.EqualValues(t, ret, []string{"옵션을 선택하세요", "Small", "Midium"})

	body, err = util.Get("https://www.shoprootscience.com/shop/arctic-c-vitamin-c-serum")
	assert.Equal(t, nil, err)
	ret = getOptions(body)
	assert.EqualValues(t, ret, []string(nil))

	body, err = util.Get("https://shopkeeper.wp-theme.design/shop/hoodies/oversize-drawstring-sweatshirt/")
	assert.Equal(t, nil, err)
	ret = getOptions(body)
	assert.EqualValues(t, ret, []string{"Choose an option", "Camel", "Green", "Black", "White", "Choose an option", "XS", "S", "M", "L", "XL"})
}
