コード例 #1
0
        public async Task AddWorkoutEntryReturnsTrue()
        {
            //Arrange
            var loggerMock           = new Mock <ILoggerFactory>();
            var userRepoMock         = new Mock <IUserRepository>();
            var workoutRepoMock      = new Mock <IWorkoutRepository>();
            var workoutEntryRepoMock = new Mock <IWorkoutEntryRepository>();
            var exerciseRepoMock     = new Mock <IExerciseRepository>();
            var mockMapper           = new Mock <IMapper>();
            var logger = new Mock <ILogger>();

            loggerMock.Setup(l => l.CreateLogger(It.IsAny <string>())).Returns(logger.Object);


            var exercise = new Exercise
            {
                Id   = 1,
                Name = "Benchpress"
            };

            var workout = new Workout
            {
                Id             = 1,
                CreationDate   = DateTime.Now,
                UserId         = 0,
                WorkoutEntries = new List <WorkoutEntry>()
            };
            var user = new User
            {
                Id       = 1,
                Workouts = new List <Workout> {
                    workout
                }
            };

            var dto = new AddWorkoutEntryToWorkoutDto
            {
                UserId           = 1,
                WorkoutId        = 1,
                WorkoutEntryDtos = new List <NewWorkoutEntryDto>
                {
                    new NewWorkoutEntryDto
                    {
                        ExerciseId = 1,
                        Set        = 1,
                        Reps       = 10,
                        Weight     = 35
                    },
                    new NewWorkoutEntryDto
                    {
                        ExerciseId = 2,
                        Set        = 1,
                        Reps       = 15,
                        Weight     = 70
                    }
                }
            };

            userRepoMock.Setup(r => r.GetUser(It.IsAny <int>())).ReturnsAsync(user);
            workoutRepoMock.Setup(r => r.GetWorkoutWithEntries(It.IsAny <int>())).ReturnsAsync(workout);
            userRepoMock.Setup(r => r.UpdateAsync(It.IsAny <User>())).ReturnsAsync(true);
            exerciseRepoMock.Setup(r => r.FindAsync(It.IsAny <int>())).ReturnsAsync(exercise);
            mockMapper.Setup(m => m.Map <WorkoutEntry>(It.IsAny <WorkoutEntryDto>())).Returns(new WorkoutEntry());


            var SUT = new WorkoutService(loggerMock.Object, mockMapper.Object, userRepoMock.Object,
                                         workoutRepoMock.Object,
                                         exerciseRepoMock.Object, workoutEntryRepoMock.Object);

            //Act
            var result = await SUT.AddWorkoutEntryAsync(dto);

            //Asert
            Assert.True(result == 2); //Two entries are added to the workout
        }