Added: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy?rev=1865786&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy (added) +++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy Fri Aug 23 18:00:01 2019 @@ -0,0 +1,356 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.ofbiz.product + +import org.apache.ofbiz.base.util.Debug +import org.apache.ofbiz.base.util.UtilDateTime +import org.apache.ofbiz.base.util.UtilMisc +import org.apache.ofbiz.base.util.UtilValidate +import org.apache.ofbiz.entity.GenericValue +import org.apache.ofbiz.entity.util.EntityQuery +import org.apache.ofbiz.order.shoppingcart.CheckOutHelper +import org.apache.ofbiz.order.shoppingcart.ShoppingCart +import org.apache.ofbiz.order.shoppingcart.ShoppingCartItem +import org.apache.ofbiz.testtools.GroovyScriptTestCase +import org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker +import org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.ActionResultInfo +import org.apache.ofbiz.service.ServiceUtil + +import java.sql.Timestamp +import java.util.Map + +class ProductPromoActionTest extends GroovyScriptTestCase { + + ShoppingCart loadOrder(String orderId) { + GenericValue permUserLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").cache().queryOne() + Map<String, Object> serviceCtx = [orderId: orderId, + skipInventoryChecks: true, // the items are already reserved, no need to check again + skipProductChecks: true, // the products are already in the order, no need to check their validity now + userLogin: permUserLogin] + Map<String, Object> loadCartResp = dispatcher.runSync("loadCartFromOrder", serviceCtx) + + return loadCartResp.shoppingCart + } + + Map prepareConditionMap(ShoppingCart cart, BigDecimal amount, boolean persist) { + GenericValue productPromoAction = delegator.makeValue("ProductPromoAction", [amount: amount, orderAdjustmentTypeId:'PROMOTION_ADJUSTMENT']) + if (persist) { + GenericValue productPromo = delegator.makeValue("ProductPromo", [productPromoId: 'TEST']) + delegator.createOrStore(productPromo) + GenericValue productPromoRule = delegator.makeValue("ProductPromoRule", [productPromoId: 'TEST', productPromoRuleId:'01']) + delegator.createOrStore(productPromoRule) + productPromoAction.productPromoId = 'TEST' + productPromoAction.productPromoRuleId = '01' + productPromoAction.productPromoActionSeqId = '01' + delegator.createOrStore(productPromoAction) + } + return [shoppingCart: cart, nowTimestamp: UtilDateTime.nowTimestamp(), actionResultInfo: new ActionResultInfo(), productPromoAction: productPromoAction] + } + + /** + * This test check if the function productTaxPercent work correctly + * 1. test failed with passing non valid value + * 2. test success if the tax percent promo is set for tax percent + */ + void testActionProductTaxPercent() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, true) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActTaxPercent", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + + //Increase item quantity to generate higher tax amount + for (ShoppingCartItem item : cart.items()) { + if (!item.getIsPromo()) { + item.setQuantity(300, dispatcher, cart) + } + } + + //Add tax to cart + CheckOutHelper coh = new CheckOutHelper(dispatcher, delegator, cart); + coh.calcAndAddTax(false); + + serviceResult = dispatcher.runSync("productPromoActTaxPercent", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } + + /** + * This test check if the function productShipCharge work correctly + * 1. test failed with passing non valid value + * 2. test success if the ship charge promo is set for the shipping amount + */ + void testProductShipCharge() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, true) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActShipCharge", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + + //Add shipgroup estimate to cart + cart.setItemShipGroupEstimate(22 , 0) + + serviceResult = dispatcher.runSync("productPromoActShipCharge", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } + + /** + * This test check if the function PoductSpecialPrice work correctly + * 1. test failed with passing non valid value + * 2. test success if the special price is set + */ + void testPoductSpecialPrice() { + ShoppingCart cart = loadOrder("DEMO10091") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9013", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActProdSpecialPrice", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + + //Add item to cart to trigger action + int itemIndex = cart.addItemToEnd("WG-1111", 100, 10, null, null, null, null, null, dispatcher, null, null) + ShoppingCartItem item = cart.findCartItem(itemIndex) + if (item) { + item.setSpecialPromoPrice(BigDecimal.valueOf(22)) + } + + serviceResult = dispatcher.runSync("productPromoActProdSpecialPrice", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } + + /** + * This test check if the function ProductOrderAmount work correctly + * 1. test success if the order amount off is set + */ + void testProductOrderAmount() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9012", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActOrderAmount", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + + // no condition so no false test + } + + /** + * This test check if the function productOrderPercent work correctly + * 1. test success if the order percent off promo is set + * 2. test failed with passing non valid value + */ + void testProductOrderPercent() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9019", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActOrderPercent", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + + //Update cart to cancel trigger action + cart.clearAllAdjustments() + for (ShoppingCartItem item : cart.items()) { + if (!item.getIsPromo()) { + GenericValue product = EntityQuery.use(delegator).from("Product").where("productId", item.getProductId()).queryOne() + if (product != null) { + product.put("includeInPromotions", "N") + item._product = product + } + } + } + + serviceContext.shoppingCart = cart + serviceContext.actionResultInfo = new ActionResultInfo() + serviceResult = dispatcher.runSync("productPromoActOrderPercent", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + } + + /** + * This test check if the function productPromoActProdPrice work correctly + * 1. test failed with passing non valid value + * 2. test success if promo is applied + */ + void testProductPrice() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9015", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActProdPrice", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + + //Update cart to trigger action + for (ShoppingCartItem item : cart.items()) { + if (!item.getIsPromo()) { + item.setQuantity(20, dispatcher, cart) + } + } + + serviceContext.shoppingCart = cart + serviceContext.actionResultInfo = new ActionResultInfo() + serviceResult = dispatcher.runSync("productPromoActProdPrice", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } + + /** + * This test check if the function productPromoActProdAMDISC work correctly + * 1. test success if promo is applied + * 2. test failed with passing already applied promo + */ + void testProductAMDISC() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9015", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActProdAMDISC", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + + serviceContext.shoppingCart = cart + serviceContext.actionResultInfo = new ActionResultInfo() + serviceResult = dispatcher.runSync("productPromoActProdAMDISC", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + } + + /** + * This test check if the function productPromoActProdDISC work correctly + * 1. test success if promo is applied + * 2. test failed with passing already applied promo + */ + void testProductDISC() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, false) + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9015", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActProdDISC", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + + //Check result service false test + serviceContext.shoppingCart = cart + serviceContext.actionResultInfo = new ActionResultInfo() + serviceResult = dispatcher.runSync("productPromoActProdDISC", serviceContext) + + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + } + + /** + * This test check if the function ProductGWP work correctly + * 1. test failed with passing non valid value + * 2. test success if gift with purchase promo is set for order + */ + void testProductGWP() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, true) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActGiftGWP", serviceContext) + + //Check result service false test + assert ServiceUtil.isSuccess(serviceResult) + assert !serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount == 0 + + serviceContext.shoppingCart = cart + serviceContext.actionResultInfo = new ActionResultInfo() + GenericValue productPromoAction = EntityQuery.use(delegator).from("ProductPromoAction").where("productPromoId", "9017", "productPromoRuleId", "01", "productPromoActionSeqId", "01").queryOne() + serviceContext.productPromoAction = productPromoAction + serviceResult = dispatcher.runSync("productPromoActGiftGWP", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } + + /** + * This test check if the function productActFreeShip work correctly + * 1. test success if the free shipping promo is set for tax percent + * 2. don't need to make false test because this fonction doesn't need condition + */ + void testFreeShippingAct() { + ShoppingCart cart = loadOrder("DEMO10090") + + Map<String, Object> serviceContext = prepareConditionMap(cart, 10, true) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoActFreeShip", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.actionResultInfo.ranAction + assert serviceResult.actionResultInfo.totalDiscountAmount != null + } +} Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoActionTests.groovy ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy?rev=1865786&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy (added) +++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy Fri Aug 23 18:00:01 2019 @@ -0,0 +1,379 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.ofbiz.product + +import java.sql.Timestamp +import org.apache.ofbiz.base.util.UtilDateTime +import org.apache.ofbiz.base.util.UtilMisc +import org.apache.ofbiz.entity.GenericValue +import org.apache.ofbiz.entity.util.EntityQuery +import org.apache.ofbiz.order.shoppingcart.ShoppingCart +import org.apache.ofbiz.testtools.GroovyScriptTestCase +import org.apache.ofbiz.service.ServiceUtil + +class ProductPromoCondTest extends GroovyScriptTestCase { + + Map prepareConditionMap(ShoppingCart cart, String condValue) { + return prepareConditionMap(cart, condValue, false) + } + + Map prepareConditionMap(ShoppingCart cart, String condValue, boolean persist) { + GenericValue productPromoCond = delegator.makeValue("ProductPromoCond", [condValue: condValue]) + if (persist) { + GenericValue productPromo = delegator.makeValue("ProductPromo", [productPromoId: 'TEST']) + delegator.createOrStore(productPromo) + GenericValue productPromoRule = delegator.makeValue("ProductPromoRule", [productPromoId: 'TEST', productPromoRuleId:'01']) + delegator.createOrStore(productPromoRule) + productPromoCond.productPromoId = 'TEST' + productPromoCond.productPromoRuleId = '01' + productPromoCond.productPromoCondSeqId = '01' + delegator.createOrStore(productPromoCond) + } + return [shoppingCart: cart, nowTimestamp: UtilDateTime.nowTimestamp(), productPromoCond: productPromoCond] + } + + ShoppingCart loadOrder(String orderId) { + GenericValue permUserLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").cache().queryOne() + Map<String, Object> serviceCtx = [orderId: orderId, + skipInventoryChecks: true, // the items are already reserved, no need to check again + skipProductChecks: true, // the products are already in the order, no need to check their validity now + includePromoItems: false, + createAsNewOrder: 'Y', + userLogin: permUserLogin] + Map<String, Object> loadCartResp = dispatcher.runSync("loadCartFromOrder", serviceCtx) + + return loadCartResp.shoppingCart + } + + /** + * This test check if the function productPartyID work correctly + * 1. test success with a valid partyId + * 2. test failed with passing non valid value + */ + void testPartyIdPromo() { + String condValue = "FrenchCustomer" + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + cart.setOrderPartyId(condValue) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondPartyID", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + cart.setOrderPartyId("OtherPartyId") + serviceResult = dispatcher.runSync("productPromoCondPartyID", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase != 0 + } + + /** + * This test check if the function productNewACCT work correctly + * 1. test success if the customer is subscribed more than the "condValue" + * 2. test failed with passing non valid value + */ + void testNewACCTPromo() { + String condValue = "1095" + GenericValue frenchCustomer = delegator.makeValue("Party", [partyId: "FrenchCustomer", createdDate: Timestamp.valueOf("2010-01-01 00:00:00")]) + frenchCustomer.store() + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + Timestamp nowTimestamp = UtilDateTime.nowTimestamp() + cart.setOrderPartyId("FrenchCustomer") + cart.getPartyDaysSinceCreated(nowTimestamp) + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondNewACCT", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase >= 0 + + //2.test promo nonvalid + frenchCustomer.createdDate = nowTimestamp + frenchCustomer.store() + cart.getPartyDaysSinceCreated(nowTimestamp) + serviceResult = dispatcher.runSync("productPromoCondNewACCT", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase < 0 + } + + /** + * This test check if the function productPartyClass work correctly + * 1. test success if the login user is from part of classification of the promoCondition + * 2. test failed with passing non valid value + */ + void testPartyClassPromo() { + String condValue = "PROMO_TEST" + GenericValue partyClassGroup = delegator.makeValue("PartyClassificationGroup", [partyClassificationGroupId: condValue]) + delegator.createOrStore(partyClassGroup) + GenericValue partyClassification = delegator.makeValue("PartyClassification", + [partyId: "FrenchCustomer", partyClassificationGroupId: condValue, + fromDate: Timestamp.valueOf("2010-01-01 00:00:00"), + thruDate: null]) + delegator.createOrStore(partyClassification) + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + cart.setOrderPartyId("FrenchCustomer") + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondPartyClass", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + partyClassification.refresh() + partyClassification.thruDate = Timestamp.valueOf("2010-01-01 00:00:00") + partyClassification.store() + serviceResult = dispatcher.runSync("productPromoCondPartyClass", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 1 + } + + /** + * This test check if the function productPartyGM work correctly + * 1. test success if the login user is from part of the Group member of the promoCondition + * 2. test failed with passing non valid value + */ + void testPartyGMPromo() { + String condValue = "HUMAN_RES" + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + cart.setOrderPartyId(condValue) + GenericValue partyRole = delegator.makeValue("PartyRole", [partyId: "FrenchCustomer", roleTypeId: "_NA_"]) + delegator.createOrStore(partyRole) + partyRole.partyId = condValue + delegator.createOrStore(partyRole) + GenericValue relation = delegator.makeValue("PartyRelationship", [partyIdFrom: "FrenchCustomer", roleTypeIdFrom: "_NA_", + partyIdTo: condValue, roleTypeIdTo: "_NA_", + fromDate: Timestamp.valueOf("2010-01-01 00:00:00"), + partyRelationshipTypeId: "GROUP_ROLLUP"]) + delegator.createOrStore(relation) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondPartyGM", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + cart.setOrderPartyId("OtherPartyId") + serviceResult = dispatcher.runSync("productPromoCondPartyGM", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 1 + } + + /** + * This test check if the function productRoleType work correctly + * 1. test success if the login user role type is equal to the condValue + * 2. test failed with passing non valid value + */ + void testRoleTypePromo() { + String condValue = "APPROVER" + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + cart.setOrderPartyId("FrenchCustomer") + GenericValue partyRole = delegator.makeValue("PartyRole", [partyId: "FrenchCustomer", roleTypeId: condValue]) + delegator.createOrStore(partyRole) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondRoleType", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + cart.setOrderPartyId("OtherPartyId") + serviceResult = dispatcher.runSync("productPromoCondRoleType", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase != 0 + } + + /** + * This test check if the function productGeoID work correctly + * 1. test success if the shipping address is equal to the condValue + * 2. test failed with passing non valid value + */ + void testCondGeoIdPromo() { + ShoppingCart cart = loadOrder("DEMO10090") + cart.setShippingContactMechId(0, "9200") + GenericValue productPromoCond = EntityQuery.use(delegator).from("ProductPromoCond").where("productPromoId", "9022", "productPromoRuleId", "01", "productPromoCondSeqId", "01").queryOne() + + // call service promo + Map<String, Object> serviceContext = [shoppingCart: cart, nowTimestamp: UtilDateTime.nowTimestamp(), productPromoCond: productPromoCond] + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondGeoID", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + cart = loadOrder("DEMO10091") + cart.setShippingContactMechId(0, "10000") + serviceContext.shoppingCart = cart + serviceResult = dispatcher.runSync("productPromoCondGeoID", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase != 0 + } + + /** + * This test check if the function productOrderTotal work correctly + * 1. test success if the order total is equal or greater than the condValue + * 2. test failed with passing non valid value + */ + void testCondOrderTotalPromo() { + String condValue = "34.56" + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(loadOrder("DEMO10090"), condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondOrderTotal", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + serviceContext.shoppingCart = loadOrder("Demo1002") + serviceResult = dispatcher.runSync("productPromoCondOrderTotal", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase > 0 + } + + /** + * This test check if the function productPromoRecurrence work correctly + * 1. test success if the recurrence is equal to the condValue + * 2. test failed with passing non valid value + */ + void testRecurrencePromo() { + String condValue = "TEST_PROMO" + ShoppingCart cart = new ShoppingCart(delegator, "9000", Locale.getDefault(), "EUR") + GenericValue reccurenceRule = delegator.makeValue("RecurrenceRule", [recurrenceRuleId: condValue, frequency: "DAILY", intervalNumber: 1l, + countNumber: -1l, byDayList: "MO,TU,WE,TH,FR,SA,SU"]) + delegator.createOrStore(reccurenceRule) + GenericValue reccurenceInfo = delegator.makeValue("RecurrenceInfo", [recurrenceInfoId: condValue, startDateTime: Timestamp.valueOf("2008-01-01 00:00:00.000"), + recurrenceRuleId: condValue, recurrenceCount: 0l]) + delegator.createOrStore(reccurenceInfo) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondPromoRecurrence", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + condValue = "3" + serviceContext = prepareConditionMap(cart, condValue) + serviceResult = dispatcher.runSync("productPromoCondPromoRecurrence", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase != 0 + } + + /** + * This test check if the function productShipTotal work correctly + * 1. test success if ship total is greater than the condValue + * 2. test failed with passing non valid value + */ + void testShipTotalPromo() { + String condValue = "20" + BigDecimal amount = BigDecimal.valueOf(25) + ShoppingCart cart = loadOrder("DEMO10090") + cart.setItemShipGroupEstimate(amount, 0) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondOrderShipTotal", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase > 0 + + //2.test promo nonvalid + amount = BigDecimal.valueOf(19) + cart.setItemShipGroupEstimate(amount, 0) + serviceResult = dispatcher.runSync("productPromoCondOrderShipTotal", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase <= 0 + } + + /** + * This test check if the function productAmount work correctly + * 1. test success if the amount of specific product is equal to the condValue + * 2. test failed with passing non valid value + */ + void testProductAmountPromo() { + String condValue = "30" + String orderId = "DEMO10090" + ShoppingCart cart = loadOrder(orderId) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, condValue, true) + GenericValue productPromoProduct = delegator.makeValue("ProductPromoProduct", + [productPromoId: 'TEST', productPromoRuleId: '01', productPromoCondSeqId: '01', + productId: 'GZ-2644', productPromoApplEnumId: 'PPPA_INCLUDE', productPromoActionSeqId: '_NA_']) + delegator.createOrStore(productPromoProduct) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondProductAmount", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase == 0 + + //2.test promo nonvalid + condValue = "50" + serviceContext = prepareConditionMap(cart, condValue, true) + serviceResult = dispatcher.runSync("productPromoCondProductAmount", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase != 0 + } + + /** + * This test check if the function productTotal work correctly + * 1. test success if the total amount of product is equal or greater than the condValue + * 2. test failed with passing non valid value + */ + void testProductTotalPromo() { + String orderId = "Demo1002" + ShoppingCart cart = loadOrder(orderId) + + // call service promo + Map<String, Object> serviceContext = prepareConditionMap(cart, "50", true) + GenericValue productPromoProduct = delegator.makeValue("ProductPromoProduct", + [productPromoId: 'TEST', productPromoRuleId: '01', productPromoCondSeqId: '01', + productId: 'WG-1111', productPromoApplEnumId: 'PPPA_INCLUDE', productPromoActionSeqId: '_NA_']) + delegator.createOrStore(productPromoProduct) + Map<String, Object> serviceResult = dispatcher.runSync("productPromoCondProductTotal", serviceContext) + + //Check result service + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase >= 0 + + + //2.test promo nonvalid + cart = loadOrder(orderId) + serviceContext = prepareConditionMap(cart, "150", true) + serviceResult = dispatcher.runSync("productPromoCondProductTotal", serviceContext) + assert ServiceUtil.isSuccess(serviceResult) + assert serviceResult.compareBase < 0 + } +} Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductPromoCondTests.groovy ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy?rev=1865786&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy (added) +++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy Fri Aug 23 18:00:01 2019 @@ -0,0 +1,42 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.apache.ofbiz.product + +import org.apache.ofbiz.base.util.UtilDateTime +import org.apache.ofbiz.entity.GenericValue +import org.apache.ofbiz.entity.util.EntityQuery +import org.apache.ofbiz.service.ServiceUtil +import org.apache.ofbiz.testtools.GroovyScriptTestCase + +class ProductTests extends GroovyScriptTestCase { + void testUpdateProductCategory() { + Map serviceCtx = [:] + serviceCtx.categoryName = 'Updated Test Product Category' + serviceCtx.longDescription = 'Updated Long Test Product Category Description' + serviceCtx.productCategoryId = 'CATALOG1_BEST_SELL' + serviceCtx.productCategoryTypeId = 'BEST_SELL_CATEGORY' + serviceCtx.userLogin = EntityQuery.use(delegator).from('UserLogin').where('userLoginId', 'system').cache().queryOne() + Map serviceResult = dispatcher.runSync('updateProductCategory', serviceCtx) + assert ServiceUtil.isSuccess(serviceResult) + + GenericValue prodCategory = EntityQuery.use(delegator).from('ProductCategory').where('productCategoryId', 'CATALOG1_BEST_SELL').queryOne() + assert prodCategory.categoryName == 'Updated Test Product Category' + assert prodCategory.productCategoryTypeId == 'BEST_SELL_CATEGORY' + } +} Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/applications/product/src/main/groovy/org/apache/ofbiz/product/ProductTests.groovy ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductPromoTests.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductPromoTests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductPromoTests.xml (original) +++ ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductPromoTests.xml Fri Aug 23 18:00:01 2019 @@ -23,10 +23,9 @@ xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/test-suite.xsd"> <test-group case-name="product-Conditions-tests"> - <groovy-test-suite name="prodCond" location="component://product/groovyScripts/product/test/ProductPromoCondTests.groovy"/> - <!--groovy-test-suite name="productPromoCondTests" location="component://product/groovyScripts/product/test/ProductPromoCondTests.groovy"/--> + <junit-test-suite class-name="org.apache.ofbiz.product.ProductPromoCondTests"/> </test-group> <test-group case-name="product-Action-tests"> - <groovy-test-suite name="productPromoActionTests" location="component://product/groovyScripts/product/test/ProductPromoActionTests.groovy"/> + <junit-test-suite class-name="org.apache.ofbiz.product.ProductPromoActionTests"/> </test-group> </test-suite> Modified: ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductTest.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductTest.xml?rev=1865786&r1=1865785&r2=1865786&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductTest.xml (original) +++ ofbiz/ofbiz-framework/trunk/applications/product/testdef/ProductTest.xml Fri Aug 23 18:00:01 2019 @@ -31,9 +31,9 @@ under the License. </test-case> <test-case case-name="product-tests"> - <groovy-test-suite location="component://product/groovyScripts/test/ProductTests.groovy"/> + <junit-test-suite class-name="org.apache.ofbiz.product.ProductTests"/> </test-case> -</test-suite> <test-case case-name="testCreateProductFeatureType"> - <groovy-test-suite location="component://product/groovyScripts/product/test/ProductFeatureTypeTests.groovy"/> + <test-case case-name="testCreateProductFeatureType"> + <junit-test-suite class-name="org.apache.ofbiz.product.ProductFeatureTypeTests"/> </test-case> </test-suite> Added: ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy?rev=1865786&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy (added) +++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy Fri Aug 23 18:00:01 2019 @@ -0,0 +1,43 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.apache.ofbiz.base + +import org.apache.ofbiz.testtools.GroovyScriptTestCase + +class BaseTest extends GroovyScriptTestCase { + void testTrue() { + assert 1, 1 + } + + void testFalse() { + assertNotSame 1, 0 + } + + void testDelegator() { + assert delegator + } + + void testDispatcher() { + assert dispatcher + } + + void testSecurity() { + assert security + } +} Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/main/groovy/org/apache/ofbiz/base/SimpleTests.groovy ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml?rev=1865786&r1=1865785&r2=1865786&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml (original) +++ ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml Fri Aug 23 18:00:01 2019 @@ -25,6 +25,6 @@ <junit-test-suite class-name="org.apache.ofbiz.base.util.test.UtilObjectTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.string.test.FlexibleStringExpanderTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.collections.test.FlexibleMapAccessorTests"/> - <groovy-test-suite name="simple" location="component://base/groovyScripts/test/SimpleTests.groovy"/> + <junit-test-suite class-name="org.apache.ofbiz.base.SimpleTests"/> </test-group> </test-suite> |
Free forum by Nabble | Edit this page |