コード例 #1
0
        public async Task NestedObjectShouldBeExportedAndImportedProperly()
        {
            const string id = "companies/1";

            using (var store = GetDocumentStore())
            {
                string cv;
                using (var session = store.OpenSession())
                {
                    session.Store(_testCompany, id);
                    session.SaveChanges();
                    cv = session.Advanced.GetChangeVectorFor(_testCompany);
                }

                var client = new HttpClient();
                var stream = await client.GetStreamAsync($"{store.Urls[0]}/databases/{store.Database}/streams/queries?query=From%20companies&format=csv");

                using (var commands = store.Commands())
                {
                    var getOperationIdCommand = new GetNextOperationIdCommand();
                    await commands.RequestExecutor.ExecuteAsync(getOperationIdCommand, commands.Context);

                    var operationId = getOperationIdCommand.Result;

                    {
                        var csvImportCommand = new CsvImportCommand(stream, null, operationId);

                        await commands.ExecuteAsync(csvImportCommand);

                        var operation = new Operation(commands.RequestExecutor, () => store.Changes(), store.Conventions, operationId);

                        await operation.WaitForCompletionAsync();
                    }
                }

                using (var session = store.OpenSession())
                {
                    var res = session.Load <Company>(id);
                    Assert.NotEqual(session.Advanced.GetChangeVectorFor(res), cv);

                    try
                    {
                        Assert.Equal(res, _testCompany);
                    }
                    catch (Exception)
                    {
                        var sb = new StringBuilder();
                        sb.AppendLine("Expected:");
                        sb.AppendLine(JObject.FromObject(res).ToString(Formatting.Indented));
                        sb.AppendLine();
                        sb.AppendLine("Actual:");
                        sb.AppendLine(JObject.FromObject(_testCompany).ToString(Formatting.Indented));

                        Console.WriteLine(sb);

                        throw;
                    }
                }
            }
        }
コード例 #2
0
        public async Task CannotImportCsvWithInvalidCsvConfigCharParams()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(_testCompany, "companies/1");
                    session.Store(new { Query = "From companies" }, "queries/1");
                    session.SaveChanges();
                }

                var client = new HttpClient();
                var stream = await client.GetStreamAsync($"{store.Urls[0]}/databases/{store.Database}/streams/queries?fromDocument=queries%2F1&format=csv");

                using (var commands = store.Commands())
                {
                    var getOperationIdCommand = new GetNextOperationIdCommand();
                    await commands.RequestExecutor.ExecuteAsync(getOperationIdCommand, commands.Context);

                    var operationId = getOperationIdCommand.Result;

                    var invalidCsvConfig = new InValidCsvImportOptions()
                    {
                        Delimiter     = ",",
                        Quote         = " '", // 2 characters is invalid
                        Comment       = " #", // 2 characters is invalid
                        AllowComments = true,
                        TrimOptions   = "None"
                    };

                    var csvImportCommand = new CsvImportCommand(stream, null, operationId, invalidCsvConfig);


                    var exception = await Assert.ThrowsAsync <Raven.Client.Exceptions.RavenException>(async() =>
                    {
                        await commands.ExecuteAsync(csvImportCommand);
                        var operation = new Operation(commands.RequestExecutor, () => store.Changes(), store.Conventions, operationId);
                        await operation.WaitForCompletionAsync();
                    });

                    Assert.Contains("Please verify that only one character is used", exception.Message);
                }
            }
        }
コード例 #3
0
        public async Task NestedObjectShouldBeExportedAndImportedProperly()
        {
            var    id = "companies/1";
            string cv;

            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(_testCompany, id);
                    session.SaveChanges();
                    cv = session.Advanced.GetChangeVectorFor(_testCompany);
                }

                var client = new HttpClient();
                var stream = await client.GetStreamAsync($"{store.Urls[0]}/databases/{store.Database}/streams/queries?query=From%20companies&format=csv");

                using (var commands = store.Commands())
                {
                    var getOperationIdCommand = new GetNextOperationIdCommand();
                    await commands.RequestExecutor.ExecuteAsync(getOperationIdCommand, commands.Context);

                    var operationId = getOperationIdCommand.Result;

                    {
                        var csvImportCommand = new CsvImportCommand(stream, null, operationId);

                        await commands.ExecuteAsync(csvImportCommand);

                        var operation = new Operation(commands.RequestExecutor, () => store.Changes(), store.Conventions, operationId);

                        await operation.WaitForCompletionAsync();
                    }
                }

                using (var session = store.OpenSession())
                {
                    var res = session.Load <Company>(id);
                    Assert.NotEqual(session.Advanced.GetChangeVectorFor(res), cv);
                    Assert.Equal(res, _testCompany);
                }
            }
        }
コード例 #4
0
        public async Task ExportingAndImportingCsvUsingQueryFromDocumentShouldWork()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(_testCompany, "companies/1");
                    session.Store(new{ Query = "From%20companies" }, "queries/1");
                    session.SaveChanges();
                }

                var client = new HttpClient();
                var stream = await client.GetStreamAsync($"{store.Urls[0]}/databases/{store.Database}/streams/queries?fromDocument=queries%2F1&format=csv");

                using (var commands = store.Commands())
                {
                    var getOperationIdCommand = new GetNextOperationIdCommand();
                    await commands.RequestExecutor.ExecuteAsync(getOperationIdCommand, commands.Context);

                    var operationId = getOperationIdCommand.Result;

                    {
                        var csvImportCommand = new CsvImportCommand(stream, null, operationId);

                        await commands.ExecuteAsync(csvImportCommand);

                        var operation = new Operation(commands.RequestExecutor, () => store.Changes(), store.Conventions, operationId);

                        await operation.WaitForCompletionAsync();
                    }
                }

                using (var session = store.OpenSession())
                {
                    var res = session.Query <Company>().ToList();
                    Assert.Equal(2, res.Count);
                    Assert.Equal(res[0], res[1]);
                }
            }
        }