public async Task MetadataUpdateListeners() { var store = this.NewStore(1); var anotherStore = this.NewStore(2); var metadataListener = new DoNotUpdateEtagListener(); var alwaysUpdateListener = new NoOpUpdateMetadataListener(); store.Listeners.RegisterListener(metadataListener); using (var sessionDestination = store.OpenAsyncSession()) { sessionDestination.RegisterUpload("test1.file", CreateUniformFileStream(128)); await sessionDestination.SaveChangesAsync(); var file = await sessionDestination.LoadFileAsync("test1.file"); var oldEtag = file.Metadata.Value <string>("ETag"); var newEtag = Guid.NewGuid(); file.Metadata["ETag"] = new RavenJValue(newEtag); await sessionDestination.SaveChangesAsync(); file = await sessionDestination.LoadFileAsync("test1.file"); Assert.Equal(oldEtag, file.Metadata.Value <string>("ETag")); Assert.Equal(1, metadataListener.BeforeCount); Assert.Equal(0, metadataListener.AfterCount); store.Listeners.RegisterListener(alwaysUpdateListener); file.Metadata["ETag"] = new RavenJValue(newEtag); await sessionDestination.SaveChangesAsync(); file = await sessionDestination.LoadFileAsync("test1.file"); Assert.Equal(oldEtag, file.Metadata.Value <string>("ETag")); Assert.Equal(3, alwaysUpdateListener.BeforeCount + metadataListener.BeforeCount); Assert.Equal(0, alwaysUpdateListener.AfterCount + metadataListener.AfterCount); } }
public async Task MetadataUpdateListeners() { var store = this.NewStore(1); var anotherStore = this.NewStore(2); var metadataListener = new DoNotUpdateEtagListener(); var alwaysUpdateListener = new NoOpUpdateMetadataListener(); store.Listeners.RegisterListener(metadataListener); using (var sessionDestination = store.OpenAsyncSession()) { sessionDestination.RegisterUpload("test1.file", CreateUniformFileStream(128)); await sessionDestination.SaveChangesAsync(); var file = await sessionDestination.LoadFileAsync("test1.file"); var oldEtag = file.Metadata.Value<string>("ETag"); var newEtag = Guid.NewGuid(); file.Metadata["ETag"] = new RavenJValue(newEtag); await sessionDestination.SaveChangesAsync(); file = await sessionDestination.LoadFileAsync("test1.file"); Assert.Equal(oldEtag, file.Metadata.Value<string>("ETag")); Assert.Equal(1, metadataListener.BeforeCount); Assert.Equal(0, metadataListener.AfterCount); store.Listeners.RegisterListener(alwaysUpdateListener); file.Metadata["ETag"] = new RavenJValue(newEtag); await sessionDestination.SaveChangesAsync(); file = await sessionDestination.LoadFileAsync("test1.file"); Assert.Equal(oldEtag, file.Metadata.Value<string>("ETag")); Assert.Equal(3, alwaysUpdateListener.BeforeCount + metadataListener.BeforeCount); Assert.Equal(0, alwaysUpdateListener.AfterCount + metadataListener.AfterCount); } }