예제 #1
0
        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(
예제 #3
0
        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();
예제 #4
0
        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),
예제 #5
0
        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());
        }