public async Task <IActionResult> Challenge(NewChallengeViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel)); // Retry
            }
            var user = await GetCurrentUserAsync();

            NewChallengeViewModel tempData;
            var isSuccess = Tempdata.TryGetValue(user.Id, out tempData);

            if (!isSuccess || tempData == null)
            {
                return(View("/Error")); // Error
            }
            Tempdata.Remove(user.Id);   //dispose data

            var dto = _mapper.Map <NewChallengeDto>(tempData);

            dto.ChallengerId = user.Id;
            dto.ChallengeeId = viewModel.ChallengeeId;

            var result = await _challengeService.CreateChallengeAsync(dto);

            if (result < 1)
            {
                return(View("/Error")); // Error
            }
            return(RedirectToAction("Challenges", "Challenge"));
        }
示例#2
0
        public IActionResult New()
        {
            int?athleteId = HttpContext.Session.GetInt32("AthleteId");
            NewChallengeViewModel viewModel = new NewChallengeViewModel(_context, athleteId ?? 0);

            return(View(viewModel));
        }
        public ActionResult CreateChallenge(NewChallengeViewModel model)
        {
            model.ChallengeStatus = ChallengeStatus.Proposed;

            Manager.CreateChallenge(model);

            return(View(model));
        }
示例#4
0
        public async Task ChallengePost_ReturnsBadRequestResult_WhenModelStateIsInvalid()
        {
            // Arrange
            var challengeViewModel = new NewChallengeViewModel()
            {
                Id           = 1,
                ExerciseId   = 1,
                ExerciseName = "Squat",
                Reps         = -10,
                Set          = -10,
                Weight       = -10
            };
            var mockUserManager   = new FakeUserManager();
            var mockMapper        = new Mock <IMapper>();
            var mockLoggerFactory = new Mock <ILoggerFactory>();
            var mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(l => l.CreateLogger(It.IsAny <string>())).Returns(mockLogger.Object);
            var mockWorkoutService    = new Mock <IWorkoutService>();
            var mockExerciseService   = new Mock <IExerciseService>();
            var mockChallengeService  = new Mock <IChallengeService>();
            var mockWorkoutRepository = new Mock <IWorkoutRepository>();

            var workoutController = new WorkoutController(
                mockLoggerFactory.Object,
                mockMapper.Object,
                mockWorkoutService.Object,
                mockExerciseService.Object,
                mockUserManager,
                mockWorkoutRepository.Object,
                mockChallengeService.Object);

            workoutController.ModelState.AddModelError("ExerciseName", "Required");

            // Act
            var result = await workoutController.Challenge(challengeViewModel) as ViewResult;

            // Assert
            Assert.IsType <ViewResult>(result);
            Assert.IsType <NewChallengeViewModel>(result.Model);
            Assert.Equal(false, result.ViewData.ModelState.IsValid);
        }
        public NewChallengeViewModel CreateChallenge(NewChallengeViewModel newChallenge)
        {
            //TODO:
            // Add another table of emails to sync accounts for
            // we may need to do this when we sync someones friends
            try {
                var participantIds = new List <long>();
                participantIds.Add(newChallenge.ChallengeeUserId);
                participantIds.Add(SessionManager.GetCurrentUser().UserId);
                if (ChallengeAccess.CreateChallenge(newChallenge.ToChallengeDataModel()))
                {
                    return(newChallenge);
                }
            }catch (Exception e)
            {
                newChallenge.SetError("An error occured when trying to create your challenge.");
            }

            return(newChallenge);
        }
示例#6
0
        public async Task ChallengePost_ReturnsViewError_ChallengeNotCreated()
        {
            // Arrange
            var newChallengeDto = new NewChallengeDto()
            {
                Weight = 10, ChallengeeId = 1, ChallengerId = 2, ExerciseId = 1, Reps = 10
            };
            var challengeableUserDtos = new List <ChallengeAbleUserDto>()
            {
                new ChallengeAbleUserDto {
                    DisplayName = "Test", Id = 1
                }
            };

            var challengeViewModel = new NewChallengeViewModel()
            {
                Id                    = 1,
                ExerciseId            = 1,
                ChallengeAbleUserDtos = challengeableUserDtos,
                ChallengeeId          = challengeableUserDtos.First().Id,
                ExerciseName          = "Squat",
                Reps                  = 10,
                Set                   = 10,
                Weight                = 10
            };

            var mockUserManager = new FakeUserManager();
            var mockMapper      = new Mock <IMapper>();

            mockMapper.Setup(m => m.Map <NewChallengeDto>(It.IsAny <NewChallengeViewModel>()))
            .Returns(newChallengeDto)
            .Verifiable();
            var mockLoggerFactory = new Mock <ILoggerFactory>();
            var mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(l => l.CreateLogger(It.IsAny <string>())).Returns(mockLogger.Object);
            var mockWorkoutService   = new Mock <IWorkoutService>();
            var mockExerciseService  = new Mock <IExerciseService>();
            var mockChallengeService = new Mock <IChallengeService>();

            mockChallengeService.Setup(c => c.CreateChallengeAsync(It.IsAny <NewChallengeDto>()))
            .ReturnsAsync(0)     // Result challenge not created
            .Verifiable();
            var mockWorkoutRepository = new Mock <IWorkoutRepository>();

            var workoutController = new WorkoutController(
                mockLoggerFactory.Object,
                mockMapper.Object,
                mockWorkoutService.Object,
                mockExerciseService.Object,
                mockUserManager,
                mockWorkoutRepository.Object,
                mockChallengeService.Object);

            // Act
            var result = await workoutController.Challenge(challengeViewModel) as ViewResult;

            // Assert
            Assert.IsType <ViewResult>(result);
            Assert.Equal("/Error", result.ViewName);
        }
示例#7
0
        public async Task Challenge_ReturnsViewResult_WithModel()
        {
            // Arrange
            var workoutEntryDto = new WorkoutEntryDto()
            {
                Id = 1, ExerciseId = 1, ExerciseName = "Squat", Reps = 10, Set = 10, Weight = 10
            };
            var challengeableUserDtos = new List <ChallengeAbleUserDto>()
            {
                new ChallengeAbleUserDto {
                    DisplayName = "Test", Id = 1
                }
            };
            var challengeViewModel = new NewChallengeViewModel()
            {
                Id                    = 1,
                ExerciseId            = 1,
                ChallengeAbleUserDtos = challengeableUserDtos,
                ChallengeeId          = challengeableUserDtos.First().Id,
                ExerciseName          = "Squat",
                Reps                  = 10,
                Set                   = 10,
                Weight                = 10
            };

            var mockUserManager = new FakeUserManager();
            var mockMapper      = new Mock <IMapper>();

            mockMapper.Setup(m => m.Map <NewChallengeViewModel>(It.IsAny <WorkoutEntryDto>()))
            .Returns(challengeViewModel)
            .Verifiable();
            var mockLoggerFactory = new Mock <ILoggerFactory>();
            var mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(l => l.CreateLogger(It.IsAny <string>())).Returns(mockLogger.Object);
            var mockWorkoutService = new Mock <IWorkoutService>();

            mockWorkoutService.Setup(w => w.GetWorkoutEntryAsync(It.IsAny <int>()))
            .ReturnsAsync(workoutEntryDto)
            .Verifiable();
            var mockExerciseService  = new Mock <IExerciseService>();
            var mockChallengeService = new Mock <IChallengeService>();

            mockChallengeService.Setup(c => c.GetChallengeAbleUsersAsync(It.IsAny <int>()))
            .ReturnsAsync(challengeableUserDtos)
            .Verifiable();
            var mockWorkoutRepository = new Mock <IWorkoutRepository>();

            var workoutController = new WorkoutController(
                mockLoggerFactory.Object,
                mockMapper.Object,
                mockWorkoutService.Object,
                mockExerciseService.Object,
                mockUserManager,
                mockWorkoutRepository.Object,
                mockChallengeService.Object);

            // Act
            var result = await workoutController.Challenge(It.IsAny <int>(), It.IsAny <int>()) as ViewResult;

            // Assert
            Assert.IsType <ViewResult>(result);
            var model = Assert.IsType <NewChallengeViewModel>(result.Model);

            Assert.Equal(1, model.Id);
            Assert.Equal(1, model.ExerciseId);
            Assert.Equal(challengeableUserDtos, model.ChallengeAbleUserDtos);
            Assert.Equal(1, model.ChallengeeId);
            Assert.Equal(10, model.Reps);
            Assert.Equal(10, model.Set);
            Assert.Equal(10, model.Weight);
            //Assert.Equal("Challenge", result);
        }