public void RandomData_ReturnsSimpleManifest()
        {
            var sut = new ManifestBuilder();
            var fixture = new Fixture();
            var fileData = fixture.Create<byte[]>();

            var result = sut.BuildFileManifest(fileData);

            Assert.IsNotNull(result);
            Assert.IsEmpty(result.ItemList);
        }
        public void ZipFile_ReturnsFileList()
        {
            var sut = new ManifestBuilder();
            var fixture = new Fixture();
            var dataList = fixture.CreateMany<ZipEntryData>();
            byte[] zipFileBytes;
            using(ZipFile file = new ZipFile())
            {
                foreach (var data in dataList)
                {
                    string fullFileName = data.Directory + "/" + data.FileName;
                    var entry = file.AddEntry(fullFileName, data.FileData);
                    entry.AccessedTime = data.AccessDateTime;
                    entry.CreationTime = data.CreatedDateTime;
                    entry.ModifiedTime = data.ModifiedDateTime;
                    entry.Attributes = data.FileAttributes;
                }
                using (var stream = new MemoryStream())
                {
                    file.Save(stream);
                    stream.Position = 0;
                    zipFileBytes = TempStreamHelper.ReadAllBytes(stream);
                }
            }

            var result = sut.BuildFileManifest(zipFileBytes);

            Assert.IsNotNull(result);
            Assert.IsNotEmpty(result.ItemList);
            foreach(var data in dataList)
            {
                var entry = result.ItemList.SingleOrDefault(i=>i.FileName == data.FileName && i.Directory == data.Directory);
                Assert.IsNotNull(entry);
                Assert.AreEqual(data.AccessDateTime.ToUniversalTime(), entry.FileAccessedDateTime.ToUniversalTime());
                Assert.AreEqual(data.ModifiedDateTime.ToUniversalTime(), entry.FileModifiedDateTime.ToUniversalTime());
                Assert.AreEqual(data.CreatedDateTime.ToUniversalTime(), entry.FileCreatedDateTime.ToUniversalTime());
                Assert.AreEqual(data.FileAttributes, entry.Attributes);
            }
        }