public void WhenCommandIsInvoked_ImageTitleIsUpdated()
        {
            ImageDocument innerDocument = new ImageDocument();
            Image entity = new Image(innerDocument);
            Mock<IImageRepository> imageRepositoryMock = new Mock<IImageRepository>();
            imageRepositoryMock.Setup(x => x.Load("test")).Returns(entity);
            UpdateImageTitleCommandHandler handler = new UpdateImageTitleCommandHandler(imageRepositoryMock.Object);
            handler.Handle(new Commands.UpdateImageTitleCommand("test", "newTitle"));

            Assert.AreEqual("newTitle", innerDocument.Title);
        }
        public void WhenCommandIsInvoked_ImageIsUpdated()
        {
            ImageDocument innerDocument = new ImageDocument();
            Image entity = new Image(innerDocument);
            Mock<IImageRepository> imageRepositoryMock = new Mock<IImageRepository>();
            imageRepositoryMock.Setup(x => x.Load("test")).Returns(entity);
            UpdateImageTagsCommandHandler handler = new UpdateImageTagsCommandHandler(imageRepositoryMock.Object);
            var newTags = new[] { "one", "two" };
            handler.Handle(new Commands.UpdateImageTagsCommand("test", newTags));

            Assert.True(
                innerDocument.Tags[0].Name == "one" &&
                innerDocument.Tags[1].Name == "two");
        }
        public void WhenLoadIsInvoked_DocumentIsFlattenedIntoView()
        {
            ImageDocument doc = new ImageDocument()
            {
                Id = "knownId",
                Filename = "filename",
                Title = "title",
                Tags = new List<ImageTagDocument>()
                {
                    new ImageTagDocument(){
                         Name = "tagOne"
                    },
                    new ImageTagDocument(){
                        Name = "tagTwo"
                    }
                }
            };

            using (var s = Store.OpenSession())
            {
                s.Store(doc);
                s.SaveChanges();
            }

            using (var s = Store.OpenSession())
            {
                ImageViewFactory factory = new ImageViewFactory(s);
                var results = factory.Load(new ImageViewInputModel()
                {
                     ImageId = "knownId"
                });

                Assert.AreEqual("title", results.Title);
                Assert.AreEqual("filename", results.Filename);
                Assert.AreEqual(new[] { "tagOne", "tagTwo" }, results.Tags);
            }
        }