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);
                }
            }
Ejemplo n.º 2
0
 public PackageQueryProcessor(
     PackageQueryContextBuilder contextBuilder,
     CursorService cursorService,
     PackageCommitEnumerator packageCommitEnumerator,
     PackageQueryService queryService,
     IPackageService packageService,
     ILogger <PackageQueryProcessor> logger)
 {
     _contextBuilder          = contextBuilder;
     _cursorService           = cursorService;
     _packageCommitEnumerator = packageCommitEnumerator;
     _queryService            = queryService;
     _packageService          = packageService;
     _logger = logger;
 }
Ejemplo n.º 3
0
 public PackageService(PackageCommitEnumerator enumerator, ILogger <PackageService> logger)
 {
     _enumerator = enumerator;
     _logger     = logger;
 }