Beispiel #1
0
        public void AddMemberPromotion_Negative(string loyaltyId, string promoCode, int errorCode, string errorMessage)
        {
            MemberController    memController   = new MemberController(Database, TestStep);
            PromotionController promoController = new PromotionController(Database, TestStep);

            try
            {
                if (!string.IsNullOrEmpty(promoCode) && promoCode.Equals("0000"))
                {
                    TestStep.Start("Adding Member unique LoyaltyIds for each virtual card", "Unique LoyaltyIds should be assigned");
                    MemberModel createMember = MemberController.GenerateRandomMember(HertzLoyalty.GoldPointsRewards.RegularGold);
                    createMember = memController.AssignUniqueLIDs(createMember);
                    TestStep.Pass("Unique LoyaltyIds assigned", createMember.VirtualCards.ReportDetail());

                    loyaltyId = createMember.VirtualCards[0].LOYALTYIDNUMBER;
                    TestStep.Start($"Make AddMember Call", $"Member with LID {loyaltyId} should be added successfully and member object should be returned");
                    MemberModel memberOut = memController.AddMember(createMember);
                    AssertModels.AreEqualOnly(createMember, memberOut, MemberModel.BaseVerify);
                    TestStep.Pass("Member was added successfully and member object was returned", memberOut.ReportDetail());

                    loyaltyId = memberOut.VirtualCards.First().LOYALTYIDNUMBER;
                }
                else if (promoCode == string.Empty)
                {
                    TestStep.Start("Get Expired promotion from DB", "Expired promo found in DB");
                    IEnumerable <PromotionModel> promoOutDb = promoController.GetRandomExpiredPromotionFromDB();
                    Assert.Greater(promoOutDb.Count(), 0, "Expected one or more expired promotions from DB");
                    TestStep.Pass("Expired promotion found in DB", promoOutDb.ReportDetail());

                    promoCode    = promoOutDb.First().CODE;
                    errorMessage = $"Promotion {promoCode} is not valid anymore";

                    TestStep.Start("Adding Member unique LoyaltyIds for each virtual card", "Unique LoyaltyIds should be assigned");
                    MemberModel createMember = MemberController.GenerateRandomMember(HertzLoyalty.GoldPointsRewards.RegularGold);
                    createMember = memController.AssignUniqueLIDs(createMember);
                    TestStep.Pass("Unique LoyaltyIds assigned", createMember.VirtualCards.ReportDetail());

                    loyaltyId = createMember.VirtualCards[0].LOYALTYIDNUMBER;
                    TestStep.Start($"Make AddMember Call", $"Member with LID {loyaltyId} should be added successfully and member object should be returned");
                    MemberModel memberOut = memController.AddMember(createMember);
                    AssertModels.AreEqualOnly(createMember, memberOut, MemberModel.BaseVerify);
                    TestStep.Pass("Member was added successfully and member object was returned", memberOut.ReportDetail());
                }

                TestStep.Start("Make AddMemberPromotion Call", $"AddMemberPromotion call should throw exception with error code = {errorCode}");
                LWServiceException exception = Assert.Throws <LWServiceException>(() => memController.AddMemberPromotion(loyaltyId, promoCode, null, null, null, null, null, null),
                                                                                  "Expected LWServiceException, exception was not thrown.");
                Assert.AreEqual(errorCode, exception.ErrorCode, $"Expected Error Code: {errorCode}");
                Assert.IsTrue(exception.Message.Contains(errorMessage), $"Expected Error Message to contain: {errorMessage}");
                TestStep.Pass("AddMemberPromotion call threw expected exception", exception.ReportDetail());
            }
            catch (AssertionException ex)
            {
                TestStep.Fail(ex.Message);
                Assert.Fail();
            }
            catch (AssertModelEqualityException ex)
            {
                TestStep.Fail(ex.Message, ex.ComparisonFailures);
                Assert.Fail();
            }
            catch (Exception ex)
            {
                TestStep.Abort(ex.Message);
                Assert.Fail();
            }
        }