blob: b373200e0b1710d4a5b23262d877845102568aba [file] [log] [blame]
/*
* 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.party.party
import org.apache.ofbiz.entity.GenericValue
import org.apache.ofbiz.service.ModelService
import org.apache.ofbiz.service.ServiceUtil
import org.apache.ofbiz.service.testtools.OFBizTestCase
class PartyContactMechTests extends OFBizTestCase {
PartyContactMechTests(String name) {
super(name)
}
void testUpdatePartyEmailAddress() {
String partyId = 'DemoCustomer'
String contactMechTypeId = 'EMAIL_ADDRESS'
String emailAddress = 'ofbiztest@example.com'
// first try with just updating without changing the email address
Map serviceCtx = [
partyId: partyId,
contactMechTypeId: contactMechTypeId,
emailAddress: emailAddress,
contactMechId: '9026',
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('updatePartyEmailAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
assert contactMechId == serviceCtx.contactMechId
assert contactMech.infoString == serviceCtx.emailAddress
// now update with changing the email address, a new record will be created in ContactMech entity this time
serviceResult.clear()
serviceCtx.emailAddress = 'ofbiz-test@example.com'
serviceResult = dispatcher.runSync('updatePartyEmailAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String newContactMechId = serviceResult.contactMechId
assert newContactMechId
contactMech.clear()
contactMech = from('ContactMech')
.where('contactMechId', newContactMechId)
.queryOne()
assert contactMech
assert contactMechId != newContactMechId
assert contactMech.infoString == serviceCtx.emailAddress
}
void testUpdatePartyTelecomNumber() {
String partyId = 'DemoCustomer'
// first try with just updating without changing the email address
Map serviceCtx = [
partyId: partyId,
contactMechId: '9025',
countryCode: '1',
areaCode: '801',
contactNumber: '555-5555',
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('updatePartyTelecomNumber', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
assert contactMechId == serviceCtx.contactMechId
GenericValue telecomNumber = from('TelecomNumber')
.where('contactMechId', contactMechId)
.queryOne()
assert telecomNumber
assert telecomNumber.areaCode == serviceCtx.areaCode
assert telecomNumber.contactNumber == serviceCtx.contactNumber
// try now with changing the telecom number, a new record will be created in ContactMech, TelecomNumber entity this time
serviceResult.clear()
serviceCtx.contactNumber = '555-6666'
serviceResult = dispatcher.runSync('updatePartyTelecomNumber', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String newContactMechId = serviceResult.contactMechId
assert newContactMechId
contactMech.clear()
contactMech = from('ContactMech')
.where('contactMechId', newContactMechId)
.queryOne()
assert contactMech
assert contactMechId != newContactMechId
telecomNumber.clear()
telecomNumber = from('TelecomNumber')
.where('contactMechId', newContactMechId)
.queryOne()
assert telecomNumber
assert telecomNumber.areaCode == serviceCtx.areaCode
assert telecomNumber.contactNumber == serviceCtx.contactNumber
}
void testUpdatePartyPostalAddress() {
String partyId = 'DemoCustomer'
// first try with just updating without changing the postal address
GenericValue postalAddress = PartyWorker.findPartyLatestPostalAddress(partyId, delegator)
Map serviceCtx = dispatcher.getDispatchContext().makeValidContext('updatePartyPostalAddress', ModelService.IN_PARAM, postalAddress)
serviceCtx.partyId = partyId
serviceCtx.userLogin = userLogin
Map serviceResult = dispatcher.runSync('updatePartyPostalAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
assert contactMechId == serviceCtx.contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
postalAddress.clear()
postalAddress = from('PostalAddress')
.where('contactMechId', contactMechId)
.queryOne()
assert postalAddress
assert postalAddress.address1 == serviceCtx.address1
assert postalAddress.stateProvinceGeoId == serviceCtx.stateProvinceGeoId
assert postalAddress.postalCode == serviceCtx.postalCode
// try now with changing the postal address fields, a new record will be created in ContactMech, PostalAddress entity this time
serviceResult.clear()
serviceCtx.stateProvinceGeoId = 'VA'
serviceCtx.postalCode = '20147'
serviceResult = dispatcher.runSync('updatePartyPostalAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String newContactMechId = serviceResult.contactMechId
assert newContactMechId
contactMech.clear()
contactMech = from('ContactMech')
.where('contactMechId', newContactMechId)
.queryOne()
assert contactMech
assert contactMechId != newContactMechId
postalAddress.clear()
postalAddress = from('PostalAddress')
.where('contactMechId', newContactMechId)
.queryOne()
assert postalAddress
assert postalAddress.stateProvinceGeoId == serviceCtx.stateProvinceGeoId
assert postalAddress.postalCode == serviceCtx.postalCode
}
void testCreatePartyEmailAddress() {
String partyId = 'DemoEmployee'
String emailAddress = 'demo.employee@gmail.com'
String contactMechPurposeTypeId = 'PRIMARY_EMAIL'
Map serviceCtx = [
partyId: partyId,
contactMechPurposeTypeId: contactMechPurposeTypeId,
emailAddress: emailAddress,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createPartyEmailAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
assert emailAddress == contactMech.infoString
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().orderBy('fromDate')
.queryFirst()
assert partyContactMech
assert partyId == partyContactMech.partyId
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().orderBy('fromDate')
.queryFirst()
assert partyContactMechPurpose
assert partyId == partyContactMechPurpose.partyId
assert contactMechPurposeTypeId == partyContactMechPurpose.contactMechPurposeTypeId
}
void testCreatePartyTelecomNumber() {
String partyId = 'DemoEmployee'
String areaCode = '801'
String contactNumber = '888-8899'
String contactMechPurposeTypeId = 'PRIMARY_PHONE'
Map serviceCtx = [
partyId: partyId,
contactMechPurposeTypeId: contactMechPurposeTypeId,
areaCode: areaCode,
contactNumber: contactNumber,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createPartyTelecomNumber', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
GenericValue telecomNumber = from('TelecomNumber')
.where('contactMechId', contactMechId)
.queryOne()
assert telecomNumber
assert areaCode == telecomNumber.areaCode
assert contactNumber == telecomNumber.contactNumber
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMech
assert partyId == partyContactMech.partyId
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMechPurpose
assert partyId == partyContactMechPurpose.partyId
assert contactMechPurposeTypeId == partyContactMechPurpose.contactMechPurposeTypeId
}
void testCreateUpdatePartyTelecomNumberWithCreate() {
String partyId = 'DemoCustomer'
String contactMechPurposeTypeId = 'PHONE_WORK'
String areaCode = '801'
String contactNumber = '888-8888'
String extension = '444'
Map serviceCtx = [
partyId: partyId,
contactMechPurposeTypeId: contactMechPurposeTypeId,
areaCode: areaCode,
contactNumber: contactNumber,
extension: extension,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createUpdatePartyTelecomNumber', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
GenericValue telecomNumber = from('TelecomNumber')
.where('contactMechId', contactMechId)
.queryOne()
assert telecomNumber
assert areaCode == telecomNumber.areaCode
assert contactNumber == telecomNumber.contactNumber
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMech
assert partyId == partyContactMech.partyId
assert extension == partyContactMech.extension
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMechPurpose
assert partyId == partyContactMechPurpose.partyId
assert contactMechPurposeTypeId == partyContactMechPurpose.contactMechPurposeTypeId
}
void testCreateUpdatePartyTelecomNumberWithUpdate() {
String partyId = 'DemoCustomer'
String contactMechPurposeTypeId = 'PHONE_HOME'
String areaCode = '802'
String contactNumber = '555-5555'
Map serviceCtx = [
partyId: partyId,
contactMechId: '9125',
contactMechPurposeTypeId: contactMechPurposeTypeId,
areaCode: areaCode,
contactNumber: contactNumber,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createUpdatePartyTelecomNumber', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId != '9125'
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', '9125')
.queryFirst()
assert partyContactMechPurpose
assert partyContactMechPurpose.thruDate
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
GenericValue telecomNumber = from('TelecomNumber')
.where('contactMechId', contactMechId)
.queryOne()
assert telecomNumber
assert areaCode == telecomNumber.areaCode
assert contactNumber == telecomNumber.contactNumber
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMech
partyContactMechPurpose.clear()
partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMechPurpose
}
void testCreateUpdatePartyEmailAddressWithCreate() {
String partyId = 'DemoCustomer'
String contactMechPurposeTypeId = 'PRIMARY_EMAIL'
String emailAddress = 'demo.customer@foo.com'
Map serviceCtx = [
partyId: partyId,
contactMechPurposeTypeId: contactMechPurposeTypeId,
emailAddress: emailAddress,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createUpdatePartyEmailAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
assert emailAddress == serviceResult.emailAddress
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
assert emailAddress == contactMech.infoString
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMech
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMechPurpose
}
void testCreateUpdatePartyEmailAddressWithUpdate() {
String partyId = 'DemoCustomer'
String contactMechPurposeTypeId = 'PRIMARY_EMAIL'
String emailAddress = 'demo.customer@foo.com'
Map serviceCtx = [
partyId: partyId,
contactMechId: '9126',
contactMechPurposeTypeId: contactMechPurposeTypeId,
emailAddress: emailAddress,
userLogin: userLogin
]
Map serviceResult = dispatcher.runSync('createUpdatePartyEmailAddress', serviceCtx)
assert ServiceUtil.isSuccess(serviceResult)
String contactMechId = serviceResult.contactMechId
assert contactMechId
assert contactMechId != '9126'
assert emailAddress == serviceResult.emailAddress
GenericValue partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', '9126')
.queryFirst()
assert partyContactMechPurpose
assert partyContactMechPurpose.thruDate != null
GenericValue contactMech = from('ContactMech')
.where('contactMechId', contactMechId)
.queryOne()
assert contactMech
assert emailAddress == contactMech.infoString
GenericValue partyContactMech = from('PartyContactMech')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMech
partyContactMechPurpose.clear()
partyContactMechPurpose = from('PartyContactMechPurpose')
.where('contactMechId', contactMechId)
.filterByDate().queryFirst()
assert partyContactMechPurpose
}
}