コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);

            }
        }