예제 #1
0
        public void GettingListOfActivePromoSaveData_ReturnsAsExpected()
        {
            // this test kind of sucks. I think I've learned my lesson. Nothing should have a List<T>, it should have a structure that
            // holds a List<T> I think, so I can easier mock its functionality
            Dictionary <string, ILoginPromotionData> mockActiveData = new Dictionary <string, ILoginPromotionData>();
            ILoginPromotionData mockData_1 = Substitute.For <ILoginPromotionData>();

            mockData_1.GetId().Returns("A");
            ILoginPromotionData mockData_2 = Substitute.For <ILoginPromotionData>();

            mockData_2.GetId().Returns("C");
            mockActiveData.Add("A", mockData_1);
            mockActiveData.Add("C", mockData_2);
            systemUnderTest.ActivePromotionData = mockActiveData;

            Dictionary <string, ISingleLoginPromoProgressSaveData> mockSaveProgress = new Dictionary <string, ISingleLoginPromoProgressSaveData>();
            ISingleLoginPromoProgressSaveData mockSave_1 = Substitute.For <ISingleLoginPromoProgressSaveData>();
            ISingleLoginPromoProgressSaveData mockSave_2 = Substitute.For <ISingleLoginPromoProgressSaveData>();
            ISingleLoginPromoProgressSaveData mockSave_3 = Substitute.For <ISingleLoginPromoProgressSaveData>();

            mockSaveProgress.Add("A", mockSave_1);
            mockSaveProgress.Add("C", mockSave_2);
            mockSaveProgress.Add("B", mockSave_3);
            systemUnderTest.PromoProgress = mockSaveProgress;

            List <ISingleLoginPromoProgressSaveData> result = systemUnderTest.GetActivePromoSaveData();

            Assert.Contains(mockSave_1, result);
            Assert.Contains(mockSave_2, result);
            Assert.AreEqual(2, result.Count);
        }
        public bool ShouldShowPromoAsPopup(ISingleLoginPromoProgressSaveData i_promoProgress, ILoginPromotionData i_promoData)
        {
            bool doesHaveUI                = mAllPromosPM.DoesHaveDisplayForPromo(i_promoData.GetId());
            bool areRewardsRemaining       = i_promoProgress.AreRewardsRemaining(i_promoData);
            bool hasRewardBeenClaimedToday = i_promoProgress.HasRewardBeenClaimedToday(mBackend);

            return(doesHaveUI && areRewardsRemaining && !hasRewardBeenClaimedToday);
        }
예제 #3
0
        public void WhenAwardingPromoOnClient_ClientSaveDataIsUpdated()
        {
            MockBackend.GetTimeInMs().Returns(1000);
            ILoginPromotionData mockData = Substitute.For <ILoginPromotionData>();
            ISingleLoginPromoProgressSaveData mockProgress = Substitute.For <ISingleLoginPromoProgressSaveData>();

            LoginPromoPopupHelper systemUnderTest = CreateSystem();

            systemUnderTest.AwardPromoOnClient(mockProgress, mockData);

            mockProgress.Received().OnAwarded(1000);
        }
        public void AwardPromoOnClient(ISingleLoginPromoProgressSaveData i_promoProgress, ILoginPromotionData i_promoData)
        {
            i_promoProgress.OnAwarded(mBackend.GetTimeInMs());

            IGameRewardData rewardData = i_promoData.GetRewardDataForDay(i_promoProgress.GetCollectCount());
            IDungeonReward  reward     = mRewardSpawner.Create(rewardData);

            if (reward != null)
            {
                reward.Award();
            }
        }
        private void SetActiveProgressOnMockManagerWithIds(List <string> i_ids)
        {
            List <ISingleLoginPromoProgressSaveData> mockActivePromos = new List <ISingleLoginPromoProgressSaveData>();

            foreach (string id in i_ids)
            {
                ISingleLoginPromoProgressSaveData mockProgress = Substitute.For <ISingleLoginPromoProgressSaveData>();
                mockProgress.GetId().Returns(id);
                mockActivePromos.Add(mockProgress);
            }

            MockPromoManager.GetActivePromoSaveData().Returns(mockActivePromos);
        }
예제 #6
0
        public void ShouldShowPromo_ReturnsAsExpected(bool i_doesHaveUI, bool i_hasRewardsRemaining, bool i_hasClaimedRewardToday, bool i_expected)
        {
            ISingleLoginPromoProgressSaveData mockData        = Substitute.For <ISingleLoginPromoProgressSaveData>();
            LoginPromoPopupHelper             systemUnderTest = CreateSystem();

            MockAllPromosPM.DoesHaveDisplayForPromo(Arg.Any <string>()).Returns(i_doesHaveUI);
            mockData.HasRewardBeenClaimedToday(MockBackend).Returns(i_hasClaimedRewardToday);
            mockData.AreRewardsRemaining(Arg.Any <ILoginPromotionData>()).Returns(i_hasRewardsRemaining);

            bool shouldShow = systemUnderTest.ShouldShowPromoAsPopup(mockData, Substitute.For <ILoginPromotionData>());

            Assert.AreEqual(i_expected, shouldShow);
        }
예제 #7
0
        private void TryToShowAndAwardNextPromo()
        {
            ISingleLoginPromoProgressSaveData promoProgress = ActivePromoSaveData[0];
            ILoginPromotionData promoData = mPromoManager.GetDataForPromo(promoProgress.GetId());

            ActivePromoSaveData.RemoveAt(0);

            if (mHelper.ShouldShowPromoAsPopup(promoProgress, promoData))
            {
                mAllPromosPM.DisplayPromoAndHideOthers(promoProgress.GetId());
                mHelper.AwardPromoOnClient(promoProgress, promoData);
                mHelper.AwardPromoOnServer(promoData);
            }
            else
            {
                ProcessNextPromotion();
            }
        }