public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser) { PackageEdit edit = new PackageEdit { // Description User = editingUser, Authors = request.Authors, Copyright = request.Copyright, Description = request.Description, IconUrl = request.IconUrl, LicenseUrl = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value. ProjectUrl = request.ProjectUrl, ReleaseNotes = request.ReleaseNotes, RequiresLicenseAcceptance = request.RequiresLicenseAcceptance, Summary = request.Summary, Tags = request.Tags, Title = request.VersionTitle, // Other Package = p, Timestamp = DateTime.UtcNow, TriedCount = 0, }; EntitiesContext.Set <PackageEdit>().Add(edit); // Note: EditPackageRequests are completed asynchronously by the worker role. }
public void ApplyEdit(PackageEdit edit, string hashAlgorithm, string hash, long packageFileSize) { // before we modify this package, record its state in history PackageHistories.Add(new PackageHistory(this)); Title = edit.Title; FlattenedAuthors = edit.Authors; Copyright = edit.Copyright; Description = edit.Description; IconUrl = edit.IconUrl; LicenseUrl = edit.LicenseUrl; ProjectUrl = edit.ProjectUrl; ReleaseNotes = edit.ReleaseNotes; RequiresLicenseAcceptance = edit.RequiresLicenseAcceptance; Summary = edit.Summary; Tags = edit.Tags; User = edit.User; Hash = hash; HashAlgorithm = hashAlgorithm; PackageFileSize = packageFileSize; var now = DateTime.UtcNow; LastUpdated = now; LastEdited = now; }
public EditPackageVersionRequest(Package package, PackageEdit pendingMetadata) { var metadata = pendingMetadata ?? new PackageEdit { Authors = package.FlattenedAuthors, Copyright = package.Copyright, Description = package.Description, IconUrl = package.IconUrl, LicenseUrl = package.LicenseUrl, ProjectUrl = package.ProjectUrl, ReleaseNotes = package.ReleaseNotes, RequiresLicenseAcceptance = package.RequiresLicenseAcceptance, Summary = package.Summary, Tags = package.Tags, Title = package.Title, }; Authors = metadata.Authors; Copyright = metadata.Copyright; Description = metadata.Description; IconUrl = metadata.IconUrl; LicenseUrl = metadata.LicenseUrl; ProjectUrl = metadata.ProjectUrl; ReleaseNotes = metadata.ReleaseNotes; RequiresLicenseAcceptance = metadata.RequiresLicenseAcceptance; Summary = metadata.Summary; Tags = metadata.Tags; VersionTitle = metadata.Title; }
public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser) { PackageEdit edit = new PackageEdit { // Description User = editingUser, Authors = request.Authors, Copyright = request.Copyright, Description = request.Description, IconUrl = request.IconUrl, LicenseUrl = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value. ProjectUrl = request.ProjectUrl, ReleaseNotes = request.ReleaseNotes, RequiresLicenseAcceptance = request.RequiresLicenseAcceptance, Summary = request.Summary, Tags = request.Tags, Title = request.VersionTitle, // Other Package = p, Timestamp = DateTime.UtcNow, TriedCount = 0, }; EntitiesContext.Set<PackageEdit>().Add(edit); // Note: EditPackageRequests are completed asynchronously by the worker role. }
public virtual void StartEditPackageRequest(Package package, EditPackageVersionReadMeRequest request, User editingUser) { var edit = new PackageEdit { // No longer change these fields as they are no longer editable. // To be removed in a next wave of package immutability implementation. // (when no pending edits left to be processed in the db) Authors = package.FlattenedAuthors, Copyright = package.Copyright, Description = package.Description, IconUrl = package.IconUrl, LicenseUrl = package.LicenseUrl, ProjectUrl = package.ProjectUrl, ReleaseNotes = package.ReleaseNotes, RequiresLicenseAcceptance = package.RequiresLicenseAcceptance, Summary = package.Summary, Tags = package.Tags, Title = package.Title, // Readme ReadMeState = request.ReadMeState, // Other User = editingUser, Package = package, Timestamp = DateTime.UtcNow, TriedCount = 0, }; EntitiesContext.Set <PackageEdit>().Add(edit); // Note: EditPackageRequests are completed asynchronously by the worker role. }
public virtual void StartEditPackageRequest(Package p, EditPackageVersionRequest request, User editingUser) { if (PackageNamingConflictValidator.TitleConflictsWithExistingRegistrationId(p.PackageRegistration.Id, request.VersionTitle)) { throw new EntityException(Strings.TitleMatchesExistingRegistration, request.VersionTitle); } PackageEdit edit = new PackageEdit { // Description User = editingUser, Authors = request.Authors, Copyright = request.Copyright, Description = request.Description, IconUrl = request.IconUrl, LicenseUrl = p.LicenseUrl, // Our current policy is not to allow editing the license URL, so just clone it from its previous value. ProjectUrl = request.ProjectUrl, ReleaseNotes = request.ReleaseNotes, RequiresLicenseAcceptance = request.RequiresLicenseAcceptance, Summary = request.Summary, Tags = request.Tags, Title = request.VersionTitle, ReadMeState = request.ReadMeState, // Other Package = p, Timestamp = DateTime.UtcNow, TriedCount = 0, }; EntitiesContext.Set <PackageEdit>().Add(edit); // Note: EditPackageRequests are completed asynchronously by the worker role. }
public void ApplyPackageEditUpdatesPackage() { var p = new Package { Title = "OldTitle", Description = "OldDescription", Summary = "OldSummary", Tags = "OldTags", FlattenedAuthors = "OldAuthors", Copyright = "OldCopyright", ReleaseNotes = "OldReleaseNotes", Hash = "OldHash", HashAlgorithm = "SHA512", PackageFileSize = 0, }; var pe = new PackageEdit { Title = "NewTitle", Description = "NewDescription", Summary = "NewSummary", Tags = "NewTags", Authors = "NewAuthors", Copyright = "NewCopyright", ReleaseNotes = "NewReleaseNotes", }; p.PackageEdits.Add(pe); p.ApplyEdit(pe, "SHA1024", "NewHash", 1); Assert.Equal(1, p.PackageHistories.Count); var h = p.PackageHistories.ElementAt(0); Assert.Equal("OldTitle", h.Title); Assert.Equal("OldDescription", h.Description); Assert.Equal("OldSummary", h.Summary); Assert.Equal("OldTags", h.Tags); Assert.Equal("OldAuthors", h.Authors); Assert.Equal("OldCopyright", h.Copyright); Assert.Equal("OldReleaseNotes", h.ReleaseNotes); Assert.Equal("SHA512", h.HashAlgorithm); Assert.Equal("OldHash", h.Hash); Assert.Equal(0, h.PackageFileSize); Assert.Equal("NewTitle", p.Title); Assert.Equal("NewDescription", p.Description); Assert.Equal("NewSummary", p.Summary); Assert.Equal("NewTags", p.Tags); Assert.Equal("NewAuthors", p.FlattenedAuthors); Assert.Equal("NewCopyright", p.Copyright); Assert.Equal("NewReleaseNotes", p.ReleaseNotes); Assert.Equal("SHA1024", p.HashAlgorithm); Assert.Equal("NewHash", p.Hash); Assert.Equal(1, p.PackageFileSize); Assert.Equal(1, p.PackageEdits.Count); // It has to be deleted from the ObjectContext anyway so no point trying to delete it as part of ApplyEdit. }
public void ReadMeState_WhenInternalIsStringReturnsState(string internalValue, PackageEditReadMeState expectedState) { // Arrange & Act var edit = new PackageEdit { ReadMeStateInternal = internalValue }; // Assert Assert.Equal(expectedState, edit.ReadMeState); }
public void ReadMeState_WhenSetToChangedSavesInternalAsString(PackageEditReadMeState changedState, string expectedInternalValue) { // Arrange & Act var edit = new PackageEdit { ReadMeStateInternal = null }; edit.ReadMeState = changedState; // Assert Assert.Equal(expectedInternalValue, edit.ReadMeStateInternal); }
public void ReadMeState_WhenSetToUnchangedSavesInternalAsNull() { // Arrange & Act var edit = new PackageEdit { ReadMeStateInternal = "changed" }; edit.ReadMeState = PackageEditReadMeState.Unchanged; // Assert Assert.Null(edit.ReadMeStateInternal); }
public void SetPendingMetadata(PackageEdit pendingMetadata) { HasPendingMetadata = true; Authors = pendingMetadata.Authors; Copyright = pendingMetadata.Copyright; Description = pendingMetadata.Description; IconUrl = pendingMetadata.IconUrl; LicenseUrl = pendingMetadata.LicenseUrl; ProjectUrl = pendingMetadata.ProjectUrl; ReleaseNotes = pendingMetadata.ReleaseNotes; Tags = pendingMetadata.Tags.ToStringSafe().Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); Title = pendingMetadata.Title; }