def issue_coupon(self, coupon_series_id, userId): with self.lock: self.result['queued_count'] -= 1 issue_coupon_obj = { 'couponSeriesId': coupon_series_id, 'storeUnitId': self.tillId, 'userId': userId } issue_coupon_request = LuciObject.issueCouponRequest(issue_coupon_obj) # Issue coupon request start = time.time() coupon_details = self.connObj.issueCoupon( issue_coupon_request).__dict__ end = time.time() total = end - start with self.lock: self.result['total_issue_count'] += 1 self.result['total_issue_time'] += total self.result['avg_issue_time'] = self.result[ 'total_issue_time'] / self.result['total_issue_count'] self.queue.put((userId, coupon_details['couponCode']))
def issueCouponAndAssertions(self, couponSeriesId, issueCouponParamObj={}, couponIssuedCount=1, expectException=False): issueCouponObj = { 'couponSeriesId': couponSeriesId, 'storeUnitId': self.tillId, 'userId': self.userId } actualTillid = self.tillId if issueCouponParamObj.has_key('storeUnitId'): self.tillId = issueCouponParamObj['storeUnitId'] issueCouponObj.update(issueCouponParamObj) issueCouponRequest = LuciObject.issueCouponRequest(issueCouponObj) for _ in range(0, 5): couponDetails = self.connObj.issueCoupon( issueCouponRequest).__dict__ if couponDetails['ex'] != None and not expectException: time.sleep(1) else: break if expectException: return couponDetails['ex'].__dict__ couponCode = couponDetails['couponCode'] Assertion.constructAssertion(couponDetails != None, 'Issued Coupon Details not Empty') Assertion.constructAssertion( couponDetails['orgId'] == constant.config['orgId'], 'Coupon Series OrgId Actual : {} and Expected : {}'.format( couponDetails['orgId'], constant.config['orgId'])) Assertion.constructAssertion( couponDetails['couponSeriesId'] == couponSeriesId, 'Coupon Series Id Actual : {} and Expected : {}'.format( couponDetails['couponSeriesId'], couponSeriesId)) Assertion.constructAssertion( couponDetails['issuedToUserId'] == self.userId, 'Coupon code Issued to userId Actual : {} and Expected : {}'. format(couponDetails['issuedToUserId'], self.userId)) Assertion.constructAssertion( couponDetails['couponCode'] == couponCode, 'Issued Coupon code Actual : {} and Expected : {}'.format( couponDetails['couponCode'], couponCode)) couponIssuedDict = LuciDBHelper.getCouponsIssued( couponSeriesId, self.userId) Assertion.constructAssertion( couponIssuedDict != {}, 'Issued Coupon Code recorded in Coupons_issued table') Assertion.constructAssertion( couponIssuedDict['issuedBy'] == self.tillId, 'Issued by till Actual: {} and Expected : {}'.format( couponIssuedDict['issuedBy'], self.tillId)) # couponSentHistoryList = LuciDBHelper.getCouponSentHistoryList(couponSeriesId, couponIssuedDict['id']) # Assertion.constructAssertion(couponSentHistoryList != [], 'Issued Coupon details recorded in Coupon_sent_history') # Assertion.constructAssertion(len(couponSentHistoryList) == couponIssuedCount, 'Coupon_sent_history records Actual : {} and Expected : {}'.format(len(couponSentHistoryList), couponIssuedCount)) # Assertion.constructAssertion(couponSentHistoryList[0]['notes'] in ['ISSUED', 'RESENT'], 'Coupon_sent_history Notes Actual : {} and Expected : ISSUED/RESENT'.format(couponSentHistoryList[0]['notes'])) self.tillId = actualTillid return couponCode, couponDetails
def test_MULTI_INSTANCE_SCC_IC_CS_002(self, description): Logger.log('starting test_SCC_IC_CS_002_MULTI_INSTANCE execution') if not LuciHelper.verifyLuciServicesCount(2): pytest.skip("test requires minimum of 2 luci services running") self.connObj = LuciHelper.getFirstConn(newConnection=True) couponConfigObj, couponSeriesId = LuciHelper.saveCouponConfigAndAssertions( self) self.connObj = LuciHelper.getSecondConn(newConnection=True) userId = random.randint(1111111, 9999999) issueCouponObj = { 'couponSeriesId': couponSeriesId, 'storeUnitId': self.tillId, 'userId': userId } issueCouponRequest = LuciObject.issueCouponRequest(issueCouponObj) coupon_details = self.connObj.issueCoupon(issueCouponRequest).__dict__ Assertion.constructAssertion(coupon_details['couponCode'] is not None, 'Coupon code is not null') time.sleep(2) # update coupon config on second server dat = datetime.datetime.now() + datetime.timedelta(days=3) owner_validity = int(time.mktime(dat.timetuple()) * 1e3) couponConfigObj.update({ 'alphaNumeric': False, 'shortCodeLength': 4, 'ownerValidity': owner_validity, 'max_vouchers_per_user': 5 }) LuciHelper.saveCouponConfigAndAssertions(self, couponConfigObj) config1 = LuciHelper.getCouponConfigAndAssertion(self, couponSeriesId, no_issued=1) Assertion.constructAssertion(config1['alphaNumeric'] is False, 'alphanumeric config key updated') Assertion.constructAssertion(config1['shortCodeLength'] == 4, 'short code length updated') Assertion.constructAssertion( config1['ownerValidity'] == owner_validity, 'owner validity is updated') Assertion.constructAssertion(config1['max_vouchers_per_user'] == 5, 'max voucher per user is updated') self.connObj = LuciHelper.getFirstConn(newConnection=True) couponSearchRequest = { 'couponSeriesIds': [couponSeriesId], 'customerIds': [userId], 'couponSeriesRequired': True } couponDetailsList = None for _ in range(7): couponDetailsResponse = self.connObj.couponSearch( LuciObject.couponSearchRequest(couponSearchRequest)).__dict__ couponDetailsList = couponDetailsResponse['coupons'] if len(couponDetailsList) == 1 and vars( vars(couponDetailsResponse['coupons'][0]) ['couponSeries'])['alphaNumeric'] is not None: break time.sleep(10) Assertion.constructAssertion( len(couponDetailsList) == 1, 'Coupon Details list, Actual {} and Expected 1'.format( len(couponDetailsList))) for i in range(len(couponDetailsList)): couponDetails = couponDetailsList[i].__dict__ Assertion.constructAssertion( vars(couponDetails['couponSeries'])['alphaNumeric'] is False, 'alphanumeric config key updated') Assertion.constructAssertion( vars(couponDetails['couponSeries'])['shortCodeLength'] == 4, 'short code length updated') Assertion.constructAssertion( vars(couponDetails['couponSeries'])['ownerValidity'] == owner_validity, 'owner validity is updated') Assertion.constructAssertion( vars(couponDetails['couponSeries'])['max_vouchers_per_user'] == 5, 'max voucher per user is updated')