public async Task SupportsModifyingEntriesInExistingArchives()
            {
                // Arrange
                EntityContext.ConnectionString = "Data Source=" + _databasePath;
                var id  = "Knapcode.MiniZip";
                var ver = "0.4.0";

                using (var entityContext = new EntityContext())
                {
                    await entityContext.Database.EnsureCreatedAsync();

                    var packageRegistration = new PackageRegistrationEntity {
                        Id = id
                    };
                    entityContext.PackageRegistrations.Add(packageRegistration);
                    var package = new PackageEntity
                    {
                        PackageRegistration = packageRegistration,
                        Version             = ver,
                    };
                    package.Identity = $"{package.PackageRegistration.Id}/{package.Version}";
                    entityContext.Packages.Add(package);

                    await entityContext.SaveChangesAsync();
                }

                var packageEnumerator = new PackageCommitEnumerator();
                var target            = new PackageService(packageEnumerator, _output.GetLogger <PackageService>());

                var a = await CreateArchiveAsync(id, ver, new ZipEntry("a.txt"), new ZipEntry("b.txt"));

                var b = await CreateArchiveAsync(id, ver, new ZipEntry("b.txt"), new ZipEntry("a.txt"));

                // Act
                await target.AddOrUpdatePackagesAsync(new[] { a });

                await target.AddOrUpdatePackagesAsync(new[] { b });

                // Assert
                using (var entityContext = new EntityContext())
                {
                    var archives = entityContext.PackageArchives.ToList();
                    Assert.Single(archives);
                    Assert.Equal(2, archives[0].EntryCount);

                    var entries = entityContext.PackageEntries.OrderBy(x => x.PackageEntryKey).ToList();
                    Assert.Equal(2, entries.Count);
                    Assert.Equal(0ul, entries[0].Index);
                    Assert.Equal(Encoding.ASCII.GetBytes("b.txt"), entries[0].Name);
                    Assert.Equal(1ul, entries[1].Index);
                    Assert.Equal(Encoding.ASCII.GetBytes("a.txt"), entries[1].Name);
                }
            }
        private async Task ConsumeAsync(
            IReadOnlyList <V2Package> packages,
            string cursorName,
            Func <V2Package, DateTimeOffset> getTimestamp)
        {
            var oldCUrsor = await _cursorService.GetValueAsync(cursorName);

            await _service.AddOrUpdatePackagesAsync(packages);

            var newCursor = packages.Max(getTimestamp);

            if (newCursor > oldCUrsor)
            {
                await _cursorService.SetValueAsync(cursorName, newCursor);
            }
        }