客製化購物車如何測試贈品多規格
若商店有客製化購物車,則開啟贈品多規格之前,可先按下步驟確認贈品多規格在購物車是否正常運作
-
首先打開console,可參考chrome的教學:
可以使用快捷鍵 Control + Shift + J 鍵或 Command + Option + J 鍵 (Mac)打開介面
https://developer.chrome.com/docs/devtools/console/reference?hl=zh-tw#open
-
測試方式:當購物車第一個商品是有規格的情況可以用下面這段程式碼,複製貼到 console 上即可看到彈窗確認是否跑版。
fetch('/packs/manifest.json') .then(r => r.json()) .then(function(manifest) { var templateValue = manifest[Object.keys(manifest).find(k => k.includes('quick_cart'))] var templateUrl = typeof templateValue === 'string' ? templateValue : templateValue.src var el = document.querySelector('[checkout-cart-items]') var scope = angular.element(el).scope() var injector = angular.element(document.body).injector() var $http = injector.get('$http') var $uibModal = injector.get('$uibModal') var $rootScope = injector.get('$rootScope') var $q = injector.get('$q') var cartService = injector.get('cartService') var productService = injector.get('productService') var merchantId = window.mainConfig.merchantId var productId = document.querySelector('.cart-items-wrapper .table-row.cart-item').getAttribute('product-id') var MOCK_PROMOTION_ID = 'mock-promotion-id' var GIFT_QUANTITY = 3 // 想要幾個 gift 改這裡 var mockCart = { items: [{ _id: 'mock-placeholder-id', id: 'mock-placeholder-id', product_id: productId, variation_id: null, quantity: GIFT_QUANTITY, applied_promotion: { id: MOCK_PROMOTION_ID } }] } cartService.prepareCart = function() { return $q.resolve() } cartService.getCartItemsByFetch = function() { return $q.resolve({ data: { data: mockCart } }) } cartService.updateCartItem = function(payload) { var addedVariationId = payload.item.variation_id var addedQuantity = payload.item.quantity var placeholder = mockCart.items.find(i => !i.variation_id) if (placeholder) { placeholder.quantity = placeholder.quantity - addedQuantity if (placeholder.quantity <= 0) { mockCart.items = mockCart.items.filter(i => i.variation_id) } } var existingItem = mockCart.items.find(i => i.variation_id === addedVariationId) if (existingItem) { existingItem.quantity = addedQuantity } else { mockCart.items.push({ _id: 'mock-item-' + addedVariationId, id: 'mock-item-' + addedVariationId, product_id: productId, variation_id: addedVariationId, quantity: addedQuantity, applied_promotion: { id: MOCK_PROMOTION_ID } }) } return $q.resolve({ data: { data: mockCart } }) } cartService.deleteItems = function(payload) { var removedItem = mockCart.items.find(i => i.id === payload.id) if (removedItem && removedItem.variation_id) { var placeholder = mockCart.items.find(i => !i.variation_id) if (placeholder) { placeholder.quantity += removedItem.quantity } else { mockCart.items.push({ _id: 'mock-placeholder-id', id: 'mock-placeholder-id', product_id: productId, variation_id: null, quantity: removedItem.quantity, applied_promotion: { id: MOCK_PROMOTION_ID } }) } mockCart.items = mockCart.items.filter(i => i.id !== payload.id) } return $q.resolve() } productService.checkStocks = function() { return $q.resolve({ data: [{ quantity: 99, cart_quantity: 0, max_order_quantity: null }] }) } $http.get(`${window.location.origin}/api/merchants/${merchantId}/products/${productId}`) .then(function(res) { var newScope = scope.$new() newScope.product = res.data.data newScope.product.hide_price = false newScope.cart = mockCart newScope.promotionId = MOCK_PROMOTION_ID var modal = $uibModal.open({ templateUrl: templateUrl, controller: 'productVariationPickerController', scope: newScope, windowClass: 'QuickCart-modal product-set-quick-cart-modal product-variation-picker' }) modal.opened.then(function() { $rootScope.$emit('modal.open', { modalType: 'QUICK_CART_PRODUCT_SET' }) }) }) })
Updated 9 days ago
