예제 #1
0
        public void CodeService_success()
        {
            //Arrange
            var mockService = new Mock <IDatabase>();
            var service     = new CodeService(mockService.Object);
            var vm          = new CodeRedeemViewModel
            {
                Code          = "",
                UserAccountId = ""
            };

            mockService.Setup(serv => serv.FindGameKey(""))
            .Returns((new GameKey {
                GameId = 1, IsRedeemed = false
            }));

            mockService.Setup(serv => serv.FindOwnership(""))
            .Returns((new List <Ownership>()));

            //Act
            var result = service.RedeemCode(vm: vm);

            //Assert
            Assert.True(result);
        }
예제 #2
0
 public IActionResult RedeemCode([FromBody] CodeRedeemViewModel vm)
 {
     if (ModelState.IsValid)
     {
         if (_codeService.RedeemCode(vm))
         {
             return(Ok());
         }
         else
         {
             return(BadRequest());
         }
     }
     else
     {
         return(BadRequest());
     }
 }
예제 #3
0
        public void CodeService_NoKey()
        {
            //Arrange
            var mockService = new Mock <IDatabase>();
            var service     = new CodeService(mockService.Object);
            var vm          = new CodeRedeemViewModel
            {
                Code          = "",
                UserAccountId = ""
            };

            mockService.Setup(serv => serv.FindGameKey(""))
            .Returns((GameKey)null);
            //Act
            var result = service.RedeemCode(vm: vm);

            //Assert
            Assert.False(result);
        }
예제 #4
0
        public void CodeController_RedeemCode()
        {
            //Arrange
            var vm = new CodeRedeemViewModel {
                UserAccountId = "1",
                Code          = "1"
            };
            var mockService = new Mock <ICodeService>();

            mockService.Setup(serv => serv.RedeemCode(vm))
            .Returns(true);
            var controller = new CodeController(mockService.Object);

            //Act
            var result = controller.RedeemCode(vm: vm);

            //Assert
            Assert.IsType <OkResult>(result);
        }
예제 #5
0
        public bool RedeemCode(CodeRedeemViewModel vm)
        {
            var key = _db.FindGameKey(vm.Code);

            if (key == null)
            {
                return(false);
            }

            var ownership = _db.FindOwnership(vm.UserAccountId).FirstOrDefault(owned => owned.GameId == key.GameId);

            if (ownership != null)
            {
                return(false);
            }

            key.Redeem();
            _db.NewOwnership(key.GameId, DateTime.Today.ToString("yyyy-MM-dd"), Models.OwnershipState.Owned, vm.UserAccountId);
            return(true);
        }