public void PropertyTest()
        {
            string tagToAssert = "Tag";

            Document document = new Document
                                    {
                                        Path = "Path",
                                        Tags = new List<string> { tagToAssert },
                                        DateReceived = DateTime.Now,
                                        Id = "Document",
                                        Name = "MyDocument",
                                        Imported = new DateTime(2014, 03, 13, 19, 24, 00)
                                    };

            document.ExAssert(
                x =>
                x.Member(m => m.Id)
                    .IsEqualTo(document.Id)
                    .Member(m => m.Name)
                    .IsEqualTo(document.Name)
                    .Member(m => m.DateReceived)
                    .IsOnSameDayAs(document.DateReceived)
                    .Member(m => m.Imported)
                    .IsOnSameDayAs(document.Imported)
                    .Member(m => m.Path)
                    .IsEqualTo(document.Path)
                    .Member(m => m.Tags[0])
                    .IsEqualTo(tagToAssert));
        }
        public void SerializeDocument(Document document)
        {
            string commonAppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Documentania");
            if (!Directory.Exists(commonAppData))
            {
                Directory.CreateDirectory(commonAppData);
            }

            var infoFilePath = Path.Combine(commonAppData, "DocumentInfo" + ".xml");
            string metaData = Path.Combine(commonAppData, "Metadata" + ".xml");

            new FileInfoSerializer().Serialize(document, infoFilePath);
            
            new MetadataFileGenerator(metaData).GenerateFile();

            var documents = new List<string>()
            {
                metaData,
                infoFilePath,
                document.Path
            };

            new DocumentArchiveZipper(commonAppData).CreateArchive(document.Id, documents);

            File.Delete(infoFilePath);
            File.Delete(metaData);
        }
        public void NewDocumentViewModelSetPropertyTest()
        {
            // arrange
            Document document = new Document
            {
                Path = "Path",
                DateReceived = DateTime.Now,
                Id = "Document",
                Name = "MyDocument",
                Imported = new DateTime(2014, 03, 13, 19, 24, 00)
            };

            // act
            DocumentViewModel documentViewModel = new DocumentViewModel(new Mock<IDocumentService>().Object) { Model = document };

            documentViewModel.Name = NewDocumentName;

            DateTime newDateTime = new DateTime(2014, 03, 13, 14, 14, 00);
            documentViewModel.DateReceived = newDateTime;

            // assert
            documentViewModel.ExAssert(
                x =>
                x.Member(m => m.Model).IsEqualTo(document)
                    .Member(m => m.DateReceived).IsOnSameDayAs(newDateTime)
                    .Member(m => m.Name).IsEqualTo(NewDocumentName)
                    .Member(m => m.DateReceived).IsOnSameDayAs(newDateTime));
        }
        public void AddDocumentTest()
        {
            Mock<IRepository> repositoryMock = new Mock<IRepository>();
            Mock<IDocumentStorage> storageMock = new Mock<IDocumentStorage>();

            string tagToAdd = "Tag";

            Document documentToAdd = new Document()
                                         {
                                             Imported = new DateTime(2013, 3, 20),
                                             Name = "DocumentName",
                                             DateReceived = new DateTime(2012, 1, 13),
                                             Path = "DocumentPath",
                                             Tags = new List<string>() { tagToAdd }
                                         };

            IDocumentService documentService = new DocumentService(repositoryMock.Object, storageMock.Object);
            documentService.AddDocument(documentToAdd);

            repositoryMock.Verify(x => x.Add(documentToAdd));
        }
        public void GetDocumentByIdTest()
        {
            Mock<IRepository> repositoryMock = new Mock<IRepository>();
            Mock<IDocumentStorage> storageMock = new Mock<IDocumentStorage>();

            string tagToAdd = "Tag";

            Document documentToFind = new Document()
                                          {
                                              Id = "ID",
                                              Imported = new DateTime(2013, 3, 20),
                                              Name = "DocumentName",
                                              DateReceived = new DateTime(2012, 1, 13),
                                              Path = "DocumentPath",
                                              Tags = new List<string>() { tagToAdd }
                                          };

            repositoryMock.Setup(x => x.Single<Document>(It.IsAny<Expression<Func<Document, bool>>>()));

            IDocumentService documentService = new DocumentService(repositoryMock.Object, storageMock.Object);
            documentService.GetDocumentById(documentToFind.Id);

            repositoryMock.Verify(x => x.Single<Document>(It.IsAny<Expression<Func<Document, bool>>>()));
        }