public async Task CreateOrUpdate() { using (var httpTest = new HttpTest()) { httpTest.RespondWithJson(new { Id = "xxx", Ok = true, Rev = "xxx" }); var r = new Rebel { Name = "Luke", Id = "1" }; var newR = await _rebels.CreateOrUpdateAsync(r); httpTest .ShouldHaveCalled("http://localhost/rebels/1") .WithVerb(HttpMethod.Put); } }
public async Task Attachment() { using (var client = new CouchClient("http://*****:*****@"{runningPath}\Assets\luke.txt", MediaTypeNames.Text.Plain); luke = await rebels.CreateAsync(luke).ConfigureAwait(false); Assert.Equal("Luke", luke.Name); Assert.NotEmpty(luke.Attachments); CouchAttachment attachment = luke.Attachments.First(); Assert.NotNull(attachment); Assert.NotNull(attachment.Uri); // Download var downloadFilePath = await rebels.DownloadAttachment(attachment, $@"{runningPath}\Assets", "luke-downloaded.txt"); Assert.True(File.Exists(downloadFilePath)); File.Delete(downloadFilePath); // Find luke = await rebels.FindAsync(luke.Id).ConfigureAwait(false); Assert.Equal(19, luke.Age); attachment = luke.Attachments.First(); Assert.NotNull(attachment); Assert.NotNull(attachment.Uri); Assert.NotNull(attachment.Digest); Assert.NotNull(attachment.Length); // Update luke.Surname = "Skywalker"; luke = await rebels.CreateOrUpdateAsync(luke).ConfigureAwait(false); Assert.Equal("Skywalker", luke.Surname); await client.DeleteDatabaseAsync <Rebel>().ConfigureAwait(false); } }
public async Task DownloadAttachment() { using (var httpTest = new HttpTest()) { httpTest.RespondWithJson(new { Id = "1", Ok = true, Rev = "xxx", Attachments = new Dictionary <string, object> { { "luke.txt", new { ContentType = "text/plain" } } } }); httpTest.RespondWithJson(new { Id = "1", Ok = true, Rev = "xxx2", }); var r = new Rebel { Id = "1", Name = "Luke" }; r.Attachments.AddOrUpdate("Assets/luke.txt", MediaTypeNames.Text.Plain); r = await _rebels.CreateOrUpdateAsync(r); Types.CouchAttachment lukeTxt = r.Attachments.First(); var newPath = await _rebels.DownloadAttachment(lukeTxt, "anyfolder"); httpTest .ShouldHaveCalled("http://localhost/rebels/1") .WithVerb(HttpMethod.Put); httpTest .ShouldHaveCalled("http://localhost/rebels/1/luke.txt") .WithVerb(HttpMethod.Put) .WithHeader("If-Match", "xxx"); httpTest .ShouldHaveCalled("http://localhost/rebels/1/luke.txt") .WithVerb(HttpMethod.Get) .WithHeader("If-Match", "xxx"); Assert.Equal(@"anyfolder\luke.txt", newPath); } }
public async Task ContinuousChanges() { using (var client = new CouchClient("http://localhost:5984")) { IEnumerable <string> dbs = await client.GetDatabasesNamesAsync().ConfigureAwait(false); CouchDatabase <Rebel> rebels = client.GetDatabase <Rebel>(); if (dbs.Contains(rebels.Database)) { await client.DeleteDatabaseAsync <Rebel>().ConfigureAwait(false); } rebels = await client.CreateDatabaseAsync <Rebel>().ConfigureAwait(false); Rebel luke = await rebels.CreateAsync(new Rebel { Name = "Luke", Age = 19 }).ConfigureAwait(false); Assert.Equal("Luke", luke.Name); luke.Surname = "Vader"; _ = Task.Run(async() => { await Task.Delay(2000); await rebels.CreateOrUpdateAsync(luke); }); var ids = new[] { luke.Id }; var option = new ChangesFeedOptions { Since = "now" }; var filter = ChangesFeedFilter.DocumentIds(ids); using var cancelSource = new CancellationTokenSource(); await foreach (var _ in rebels.GetContinuousChangesAsync(option, filter, cancelSource.Token)) { cancelSource.Cancel(); } await client.DeleteDatabaseAsync <Rebel>().ConfigureAwait(false); } }
public async Task Crud_SpecialCharacters() { var databaseName = "rebel0_$()+/-"; using (var client = new CouchClient("http://localhost:5984")) { IEnumerable <string> dbs = await client.GetDatabasesNamesAsync().ConfigureAwait(false); CouchDatabase <Rebel> rebels = client.GetDatabase <Rebel>(databaseName); if (dbs.Contains(rebels.Database)) { await client.DeleteDatabaseAsync <Rebel>(databaseName).ConfigureAwait(false); } rebels = await client.CreateDatabaseAsync <Rebel>(databaseName).ConfigureAwait(false); Rebel luke = await rebels.CreateAsync(new Rebel { Name = "Luke", Age = 19 }).ConfigureAwait(false); Assert.Equal("Luke", luke.Name); luke.Surname = "Skywalker"; luke = await rebels.CreateOrUpdateAsync(luke).ConfigureAwait(false); Assert.Equal("Skywalker", luke.Surname); luke = await rebels.FindAsync(luke.Id).ConfigureAwait(false); Assert.Equal(19, luke.Age); await rebels.DeleteAsync(luke).ConfigureAwait(false); luke = await rebels.FindAsync(luke.Id).ConfigureAwait(false); Assert.Null(luke); await client.DeleteDatabaseAsync <Rebel>(databaseName).ConfigureAwait(false); } }
public async Task UpdatePublisher(string publisherId, Publisher publisher) { await _publisherdatabase.CreateOrUpdateAsync(publisher); }