public async Task HandleAsync_uses_downloader_to_download_file([Frozen] IEducationProfileDownloader downloader,
                                                                       ImprovedTranslateCommandHandler sut, IDispatcher dispatcher, ICommandContext <TranslateEducationCommand> context)
        {
            await sut.HandleAsync(dispatcher, context);

            Mock.Get(downloader).Verify(p => p.GetProfile(context.Command.EducationId));
        }
        public async Task HandleAsync_uses_persister_to_store_text([Frozen] ITranslationPersister persister, ImprovedTranslateCommandHandler sut,
                                                                   IDispatcher dispatcher, ICommandContext <TranslateEducationCommand> context)
        {
            await sut.HandleAsync(dispatcher, context);

            Mock.Get(persister).Verify(p => p.PersistTranslations(It.IsAny <string>(), It.IsAny <IReadOnlyList <string> >()));
        }
        public async Task HandleAsync_uses_translator_to_translate_text([Frozen] ITextExtractor extractor,
                                                                        [Frozen] ITranslator translator, ImprovedTranslateCommandHandler sut, IDispatcher dispatcher, ICommandContext <TranslateEducationCommand> context, string[] paragraphs)
        {
            Mock.Get(extractor).Setup(p => p.ExtractText(It.IsAny <string>())).Returns(paragraphs);

            await sut.HandleAsync(dispatcher, context);

            foreach (var text in paragraphs)
            {
                Mock.Get(translator).Verify(p => p.TranslateText(text, context.Command.ToLanguage));
            }
        }
        public async Task HandleAsync_uses_extractor_to_extract_paragraphs([Frozen] IEducationProfileDownloader downloader,
                                                                           [Frozen] ITextExtractor extractor, ImprovedTranslateCommandHandler sut, IDispatcher dispatcher,
                                                                           ICommandContext <TranslateEducationCommand> context,
                                                                           string content)
        {
            Mock.Get(downloader).Setup(p => p.GetProfile(It.IsAny <int>())).ReturnsAsync(content);

            await sut.HandleAsync(dispatcher, context);

            Mock.Get(extractor).Verify(p => p.ExtractText(content));
        }