Beispiel #1
0
    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']))
Beispiel #2
0
    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
Beispiel #3
0
    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')