public void CreateExercise_ReturnsNotFinishedExercise()
        {
            var fixture  = new Fixture();
            var words    = fixture.CreateMany <Word>();
            var userMock = new Mock <IUser>();

            userMock.SetupGet(mock => mock.StudiedWords).Returns(new StudiedWord[0]);
            var userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock
            .Setup(mock => mock.Load(It.IsAny <Guid>()))
            .Returns(userMock.Object);
            var wordRepositoryMock = new Mock <IWordsRepository>();

            wordRepositoryMock.Setup(mock => mock.LoadAll()).Returns(words);
            var settings = new TranslationTrainerSettings(5, 3);
            var factory  = new ExerciseFactory(
                userRepositoryMock.Object,
                wordRepositoryMock.Object,
                settings);

            var exercise = factory.Create(Guid.NewGuid());

            Assert.IsFalse(exercise.Status.IsFinished);
        }
 public ExerciseFactory(
     IUserRepository userRepository,
     IWordsRepository wordsRepository,
     TranslationTrainerSettings settings)
 {
     _userRepository  = userRepository ?? throw new ArgumentNullException(nameof(userRepository));
     _wordsRepository = wordsRepository ?? throw new ArgumentNullException(nameof(wordsRepository));
     _settings        = settings ?? throw new ArgumentNullException(nameof(settings));
 }
 public ExerciseFinisher(
     IWordsRepository wordsRepository,
     IUserRepository userRepository,
     IExerciseRepository exerciseRepository,
     TranslationTrainerSettings settings)
 {
     _wordsRepository    = wordsRepository ?? throw new ArgumentNullException(nameof(wordsRepository));
     _userRepository     = userRepository ?? throw new ArgumentNullException(nameof(userRepository));
     _exerciseRepository = exerciseRepository ?? throw new ArgumentNullException(nameof(exerciseRepository));
     _settings           = settings ?? throw new ArgumentNullException(nameof(settings));
 }