package act

import (
	"git.rosy.net.cn/baseapi/utils"
	"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
	"git.rosy.net.cn/jx-callback/business/model/dao"
	"git.rosy.net.cn/jx-callback/globals/testinit"
	"testing"

	"git.rosy.net.cn/jx-callback/business/model"

	_ "git.rosy.net.cn/jx-callback/business/partner/purchase/ebai"
	_ "git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
	_ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
)

func init() {
	testinit.Init()
}

func TestInitDb(t *testing.T) {
	dao.ExecuteSQL(dao.GetDB(), `
	DROP TABLE IF EXISTS act, act_map, act_order_rule, act_store_sku, act_store_sku_map;
	`)
}

func TestCreateActOnAlpha(t *testing.T) {
	actStoreSkuList := []*ActStoreSkuParam{
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 2,
				SkuID:   2142,
			},
		},
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 2,
				SkuID:   1162,
			},
		},
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 2,
				SkuID:   1167,
			},
		},
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 2,
				SkuID:   1172,
			},
		},
	}
	t.Log(utils.Format4Output(actStoreSkuList, true))
	// actID, err := CreateAct(jxcontext.AdminCtx, &model.Act{
	// 	Name:            "测试活动",
	// 	PricePercentage: 80,
	// 	Type:            model.ActSkuDirectDown,
	// }, []int{model.VendorIDJD, model.VendorIDMTWM, model.VendorIDEBAI}, nil, actStoreSkuList, false)
	// if err != nil {
	// 	t.Fatal(err)
	// }
	// globals.SugarLogger.Debug(actID)
}

func TestCreateActOnDev(t *testing.T) {
	//actStoreSkuList := []*ActStoreSkuParam{
	//	&ActStoreSkuParam{
	//		ActStoreSku: model.ActStoreSku{
	//			StoreID: 100884,
	//			SkuID:   22716,
	//		},
	//	},
	//	&ActStoreSkuParam{
	//		ActStoreSku: model.ActStoreSku{
	//			StoreID: 100884,
	//			SkuID:   22717,
	//		},
	//	},
	//	&ActStoreSkuParam{
	//		ActStoreSku: model.ActStoreSku{
	//			StoreID: 100920,
	//			SkuID:   22714,
	//		},
	//	},
	//	&ActStoreSkuParam{
	//		ActStoreSku: model.ActStoreSku{
	//			StoreID: 100920,
	//			SkuID:   22715,
	//		},
	//	},
	//	// &ActStoreSkuParam{
	//	// 	ActStoreSku: model.ActStoreSku{
	//	// 		StoreID: 100119,
	//	// 		SkuID:   26595,
	//	// 	},
	//	// },
	//}
	// t.Log(utils.Format4Output(actStoreSkuList, true))
	//actID, err := CreateAct(jxcontext.AdminCtx, &model.Act{
	//	Name:            "测试活动",
	//	PricePercentage: 80,
	//	Type:            model.ActSkuDirectDown,
	//	BeginAt:         time.Now().Add(-24 * time.Hour),
	//	EndAt:           time.Now().Add(10 * 24 * time.Hour),
	//}, []int{model.VendorIDJD, model.VendorIDMTWM /*, model.VendorIDEBAI*/}, nil, actStoreSkuList, false)
	//if err != nil {
	//	t.Fatal(err)
	//}
	//globals.SugarLogger.Debug(actID)
}

func TestCancelAct(t *testing.T) {
	err := CancelAct(jxcontext.AdminCtx, 1)
	if err != nil {
		t.Fatal(err)
	}
}

func TestDeleteActStoreBind(t *testing.T) {
	_, err := DeleteActStoreSkuBind(jxcontext.AdminCtx, dao.GetDB(), 1, []*ActStoreSkuParam{
		// &ActStoreSkuParam{
		// 	ActStoreSku: model.ActStoreSku{
		// 		StoreID: 100119,
		// 		SkuID:   30828,
		// 	},
		// },
		// &ActStoreSkuParam{
		// 	ActStoreSku: model.ActStoreSku{
		// 		StoreID: 100119,
		// 		SkuID:   30827,
		// 	},
		// },
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 100884,
				SkuID:   22716,
			},
		},
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 100884,
				SkuID:   22717,
			},
		},
	})
	if err != nil {
		t.Fatal(err)
	}
}

func TestAddActStoreBind(t *testing.T) {
	err := AddActStoreSkuBind(jxcontext.AdminCtx, dao.GetDB(), 1, []*ActStoreSkuParam{
		// &ActStoreSkuParam{
		// 	ActStoreSku: model.ActStoreSku{
		// 		StoreID: 100119,
		// 		SkuID:   30828,
		// 	},
		// },
		// &ActStoreSkuParam{
		// 	ActStoreSku: model.ActStoreSku{
		// 		StoreID: 100119,
		// 		SkuID:   30827,
		// 	},
		// },
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 100884,
				SkuID:   22716,
			},
		},
		&ActStoreSkuParam{
			ActStoreSku: model.ActStoreSku{
				StoreID: 100884,
				SkuID:   22717,
			},
		},
	})
	if err != nil {
		t.Fatal(err)
	}
}

func TestSyncAct(t *testing.T) {
	_, err := SyncAct(jxcontext.AdminCtx, nil, 1, nil, false)
	if err != nil {
		t.Fatal(err)
	}
}

func TestForceUpdateVendorPrice(t *testing.T) {
	//hint, err := ForceUpdateVendorPrice(jxcontext.AdminCtx, model.VendorIDJD, model.ActSkuDirectDown, []*ActStoreSkuParam{
	//	&ActStoreSkuParam{
	//		ActStoreSku: model.ActStoreSku{
	//			StoreID:  100118,
	//			SkuID:    22509,
	//			ActPrice: 9900,
	//		},
	//		VendorPrice: 19900,
	//	},
	//}, false)
	//if err != nil {
	//	t.Fatal(err)
	//}
	//t.Log(hint)
}
