Exemplo n.º 1
0
        public void TryCreateRouletteEventEntryFailedHasPrizeType()
        {
            //arrange
            var entry = new RouletteEventEntry {
                Id         = 1,
                Name       = "홍길동",
                Mobile     = "01012345678",
                CreateDate = new DateTime(2017, 10, 25),
                IpAddress  = "127.0.0.1",
                Channel    = Domain.Abstract.ChannelType.Mobile,
                PrizeType  = RouletteEventInstantLotteryPrizeType.Cash1000000
            };

            entryRepo.Setup(x => x.Any(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >())).Returns(false);
            entryRepo.Setup(x => x.Add(It.IsAny <RouletteEventEntry>())).Returns(entry);

            //action
            var failedResult = Assert.Throws <RouletteServiceException>(() => {
                var tryTest = service.CreateRouletteEventEntry(entry);
            });

            //assert
            Assert.Matches("400", failedResult.Code);
            Assert.Matches("정상적인 경로로 이벤트에 참여해주세요.", failedResult.Message);
        }
Exemplo n.º 2
0
        public void TryCreateRouletteEventEntry()
        {
            //arrange
            var entry = new RouletteEventEntry {
                Id         = 1,
                Name       = "홍길동",
                Mobile     = "01012345678",
                CreateDate = new DateTime(2017, 10, 25),
                IpAddress  = "127.0.0.1",
                Channel    = Domain.Abstract.ChannelType.Mobile
            };

            entryRepo.Setup(x => x.Any(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >())).Returns(false);
            entryRepo.Setup(x => x.Add(It.IsAny <RouletteEventEntry>())).Returns(entry);

            //action
            var tryTest = service.CreateRouletteEventEntry(entry);

            //assert
            Assert.NotNull(tryTest);
            Assert.Matches("홍길동", tryTest.Name);

            entryRepo.Verify(x => x.Add(It.IsAny <RouletteEventEntry>()), Times.Once);
            entryRepo.Verify(x => x.Any(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >()), Times.Once);
            entryRepo.Verify(x => x.Save(), Times.Once);
        }
Exemplo n.º 3
0
        public void TryUpdateRouletteEventEntry()
        {
            //arrange
            var prizes = new List <RouletteEventInstantLotteryPrizeSetting>()
            {
                new RouletteEventInstantLotteryPrizeSetting {
                    Date = new DateTime(2017, 10, 25), PrizeType = RouletteEventInstantLotteryPrizeType.Cash10000, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 16
                },
                new RouletteEventInstantLotteryPrizeSetting {
                    Date = new DateTime(2017, 10, 25), PrizeType = RouletteEventInstantLotteryPrizeType.Cash50000, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 16
                },
                new RouletteEventInstantLotteryPrizeSetting {
                    Date = new DateTime(2017, 10, 25), PrizeType = RouletteEventInstantLotteryPrizeType.Cash500000, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 16
                },
                new RouletteEventInstantLotteryPrizeSetting {
                    Date = new DateTime(2017, 10, 25), PrizeType = RouletteEventInstantLotteryPrizeType.Cash1000000, Rate = 1.0f, TotalCount = 1, WinnerCount = 0, StartTime = 14
                }
            };
            var entry = new RouletteEventEntry {
                Id         = 1,
                Name       = "홍길동",
                Mobile     = "01012345678",
                CreateDate = new DateTime(2017, 10, 25),
                IpAddress  = "127.0.0.1",
                Channel    = Domain.Abstract.ChannelType.Mobile
            };

            entryRepo.Setup(x => x.SingleOrDefault(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >())).Returns(entry);
            settingRepo.Setup(x => x.Filter(It.IsAny <Expression <Func <RouletteEventInstantLotteryPrizeSetting, bool> > >())).Returns(prizes.AsQueryable);
            settingRepo.Setup(x => x.SingleOrDefault(It.IsAny <Expression <Func <RouletteEventInstantLotteryPrizeSetting, bool> > >())).Returns(prizes[3]);
            var list = new List <RouletteEventEntry>();

            entryRepo.Setup(x => x.Filter(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >())).Returns(list.AsQueryable());
            entryRepo.Setup(x => x.Update(It.IsAny <RouletteEventEntry>())).Returns(entry);

            //action
            var result = service.UpdateRouletteEventEntry(1);

            //assert
            Assert.NotNull(result);
            Assert.Equal(result.PrizeType, RouletteEventInstantLotteryPrizeType.Cash1000000);

            entryRepo.Verify(x => x.SingleOrDefault(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.Filter(It.IsAny <Expression <Func <RouletteEventInstantLotteryPrizeSetting, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.SingleOrDefault(It.IsAny <Expression <Func <RouletteEventInstantLotteryPrizeSetting, bool> > >()), Times.Once);
            entryRepo.Verify(x => x.Filter(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >()), Times.Once);
            settingRepo.Verify(x => x.Update(It.IsAny <RouletteEventInstantLotteryPrizeSetting>()), Times.Once);
            entryRepo.Verify(x => x.Update(It.IsAny <RouletteEventEntry>()), Times.Once);
            entryRepo.Verify(x => x.Save(), Times.Once);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 개인정보 저장
        /// </summary>
        /// <param name="entry"></param>
        /// <returns></returns>
        public RouletteEventEntry CreateRouletteEventEntry(RouletteEventEntry entry)
        {
            if (entry.PrizeType.HasValue)
            {
                throw new RouletteServiceException("400", "정상적인 경로로 이벤트에 참여해주세요.", null);
            }

            var isEntryChance = entryRepo.Any(x => x.Mobile == entry.Mobile && x.PrizeType.HasValue);

            if (isEntryChance)
            {
                throw new RouletteServiceException("400", "해당번호로 중복참여가 불가능합니다.", entry.Mobile);
            }
            var result = entryRepo.Add(entry);

            entryRepo.Save();
            return(result);
        }
Exemplo n.º 5
0
        public void TryCreateRouletteEventEntryFailedWon()
        {
            //arrange
            var entry = new RouletteEventEntry {
                Id         = 1,
                Name       = "홍길동",
                Mobile     = "01012345678",
                CreateDate = new DateTime(2017, 10, 25),
                IpAddress  = "127.0.0.1",
                Channel    = Domain.Abstract.ChannelType.Mobile
            };

            entryRepo.Setup(x => x.Any(It.IsAny <Expression <Func <RouletteEventEntry, bool> > >())).Returns(true);
            entryRepo.Setup(x => x.Add(It.IsAny <RouletteEventEntry>())).Returns(entry);

            //action
            var failedResult = Assert.Throws <RouletteServiceException>(() => {
                var tryTest = service.CreateRouletteEventEntry(entry);
            });

            //assert
            Assert.Matches("400", failedResult.Code);
            Assert.Matches("해당번호로 중복참여가 불가능합니다.", failedResult.Message);
        }