public async Task Edit_media_store_media_edited_event() { // Arrange var mediaId = await CommandDispatcher.Dispatch <AddMediaCommand, Guid>(new AddMediaCommand( "marianne", "https://www.marianne.net/sites/default/themes/marianne/images/logo-marianne.svg", PoliticalOrientation.Left, new string[0] )); EventStore.CommitEvents(); // Act var command = new EditMediaCommand( mediaId, "marianne 2", "https://www.marianne.net/sites/default/themes/marianne/images/logo-marianne2.svg", PoliticalOrientation.ExtremeLeft, new string[0] ); await CommandDispatcher.Dispatch(command); // Assert (await EventStore.GetNewEvents()) .Should() .BeEquivalentTo(new DomainEvent[] { new MediaEdited(default, command.Name, command.ImageUrl, command.PoliticalOrientation)
public async Task Generate_keywords_from_article_content_summary_and_title_on_article_imported() { // Arrange var mediaId = Guid.NewGuid(); WebPageDownloader.Download(Arg.Any <string>()).Returns("<html>some content with summary</html>"); await EventStore.StoreAndPublish(new IEvent[] { new MediaAdded(mediaId, "test", null, PoliticalOrientation.Left) { Version = 1 }, new MediaFeedAdded(mediaId, "https://www.test.com/rss.xml") { Version = 2 } }); EventStore.CommitEvents(); // Act await EventStore.StoreAndPublish(new IEvent[] { new ArticleImported(Guid.NewGuid(), "some title", "some summary", new DateTime(2020, 04, 01), "https://test/article", "", "articleExternalId", new string[0], mediaId) { Version = 1 } }); // Assert (await EventStore.GetNewEvents()) .Should() .BeEquivalentTo(new DomainEvent[] { new ArticleKeywordsDefined(
public async Task Do_not_create_any_articles_when_no_mandatory_fields_in_feed_item() { // Arrange var mediaId = Guid.NewGuid(); await EventStore.StoreAndPublish(new IEvent[] { new MediaAdded(mediaId, "test", null, PoliticalOrientation.Left) { Version = 1 }, new MediaFeedAdded(mediaId, "https://www.test.com/rss.xml") { Version = 2 } }); EventStore.CommitEvents();
public async Task Synchronize_feed_on_media_feed_added() { var mediaId = Guid.NewGuid(); await EventStore.StoreAndPublish(new IEvent[] { new MediaAdded(mediaId, "test", null, PoliticalOrientation.Left) }); EventStore.CommitEvents(); _feedReader .Read("https://www.test.com/rss.xml") .Returns(x => new[] { new FeedItem { Id = "feedItem1", Title = "coronavirus increases", Summary = "some summary", Link = "https://news/article1.html", PublishDate = DateTimeOffset.Now.Date, ImageUrl = "https://news/article1.jpg" }, new FeedItem { Id = "feedItem2", Title = "get some masks", Summary = "other summary", Link = "https://news/article2.html", PublishDate = DateTimeOffset.Now.Date, ImageUrl = "https://news/article2.jpg" } }); await EventStore.StoreAndPublish(new IEvent[] { new MediaFeedAdded(mediaId, "https://www.test.com/rss.xml"), }); (await EventStore.GetNewEvents()) .OfType <ArticleImported>() .Should() .BeEquivalentTo(new DomainEvent[] { new ArticleImported(default, "coronavirus increases", "some summary", DateTimeOffset.Now.Date, "https://news/article1.html", "https://news/article1.jpg", "feedItem1", new string[0], mediaId),
public async Task Delete_articles_on_media_removed() { // Arrange var mediaId = Guid.NewGuid(); var articleId1 = Guid.NewGuid(); var articleId2 = Guid.NewGuid(); await EventStore.StoreAndPublish(new IEvent[] { new MediaAdded(mediaId, "test", null, PoliticalOrientation.Left) { Version = 1 }, new MediaFeedAdded(mediaId, "https://www.test.com/rss.xml") { Version = 2 }, new ArticleImported(articleId1, "some title", "some summary", DateTimeOffset.Now, "http://test.com", "http://test.jpg", "somexternalarticle", new string[0], mediaId) { Version = 1 }, new ArticleImported(articleId2, "some title", "some summary", DateTimeOffset.Now, "http://test.com", "http://test.jpg", "somexternalarticle", new string[0], mediaId) { Version = 1 }, }); EventStore.CommitEvents(); await EventStore.StoreAndPublish(new IEvent[] { new MediaDeleted(mediaId) }); // Assert (await EventStore.GetNewEvents()) .Should() .BeEquivalentTo(new DomainEvent[] { new ArticleDeleted(articleId1), new ArticleDeleted(articleId2) }, x => x.ExcludeDomainEventTechnicalFields()); }