// [Fact] public async Task Can_create_product_and_delete_using_object() { var odooClient = new OdooClient(Config); var model = new OdooCreateProduct() { Name = "Prod test Kg", UomId = 3, UomPoId = 3 }; var createResult = await odooClient.CreateAsync(model); createResult.Succeed.Should().BeTrue(); var createdProductId = createResult.Value; var query = OdooQuery <ProductProductOdooDto> .Create().ById(createdProductId); var product = await odooClient.GetAsync <ProductProductOdooDto>(query); product.Succeed.Should().BeTrue(); product.Value.First().Name.Should().Be(model.Name); var deleteProductResult = await odooClient.DeleteAsync(product.Value.First()); deleteProductResult.Succeed.Should().BeTrue(); deleteProductResult.Value.Should().BeTrue(); }
public void Can_create_builder_with_static_method() { var filters = OdooQuery <ProductProductOdooModel> .Create(); filters.Should().NotBeNull(); filters.Filters.Count.Should().Be(0); filters.ReturnFields.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
// [Fact] public async Task Can_create_sale_order() { var odooClient = new OdooClient(Config); var companyResult = await odooClient.GetAsync <CompanyOdooDto>(OdooQuery <CompanyOdooDto> .Create().ById(1)); companyResult.Succeed.Should().BeTrue(); var company = companyResult.Value.First(); var partnerResult = await odooClient.GetAsync <ResPartnerOdooModel>(OdooQuery <ResPartnerOdooModel> .Create().ById(9)); partnerResult.Succeed.Should().BeTrue(); var partner = partnerResult.Value.First(); var productQuery = OdooQuery <ProductProductOdooDto> .Create().ById(41); var productsResult = await odooClient.GetAsync <ProductProductOdooDto>(productQuery); productsResult.Succeed.Should().BeTrue(); var product = productsResult.Value.First(); var dictModel = OdooDictionaryModel.Create(() => new SaleOrderOdooModel { PricelistId = 17, PartnerId = partner.Id, PartnerInvoiceId = partner.Id, PartnerShippingId = partner.Id, CompanyId = company.Id, DateOrder = DateTime.Now, }); var createResult = await odooClient.CreateAsync(dictModel); createResult.Message.Should().BeNullOrEmpty(); createResult.Succeed.Should().BeTrue(); var lineModel = OdooDictionaryModel.Create(() => new SaleOrderLineOdooDto() { OrderId = createResult.Value, Name = "test line", ProductId = product.Id, ProductUomQty = 24, PriceUnit = 15 }); var createLineResult = await odooClient.CreateAsync(lineModel); createLineResult.Succeed.Should().BeTrue(); }
public async Task Shoud_get_products_using_query_take() { var odooClient = new OdooClient(Config); var query = OdooQuery <ProductProductOdooDto> .Create() .Take(10); var products = await odooClient.GetAsync <ProductProductOdooDto>(query); products.Error.Should().BeNull(); products.Value.Should().NotBeNull(); products.Value.Length.Should().Be(10); products.Succeed.Should().BeTrue(); }
public void When_use_pridicate_where_shoud_return_correct_filters_model() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Where(x => x.Id, OdooOperator.EqualsTo, 10); filters.Filters.Count.Should().Be(1); var json = JsonConvert.SerializeObject(filters.Filters); json.Should().Be("[[\"id\",\"=\",10]]"); filters.ReturnFields.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
public async Task Get_product_by_Id_test() { var odooClient = new OdooClient(Config); var query = OdooQuery <ProductProductOdooDto> .Create() .Where(x => x.Id, OdooOperator.EqualsTo, 303); var products = await odooClient.GetAsync <ProductProductOdooDto>(query); products.Error.Should().BeNull(); products.Value.Should().NotBeNull(); products.Value.Length.Should().Be(1); products.Succeed.Should().BeTrue(); }
public void When_use_where_with_OdooFilter_param_shoud_return_correct_filters_model() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Where(OdooFilter.Create().GreaterThanOrEqual("write_date", new DateTime(2020, 12, 2))) .Where(OdooFilter.Create().EqualTo("name", "Bioboxen 610l")); filters.Filters.Count.Should().Be(2); var json = JsonConvert.SerializeObject(filters.Filters); json.Should().Be("[[\"write_date\",\">=\",\"2020-12-02T00:00:00\"],[\"name\",\"=\",\"Bioboxen 610l\"]]"); filters.ReturnFields.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
public void When_use_pridicate_where_with_two_times_shoud_return_correct_filters_model() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Where(x => x.WriteDate, OdooOperator.GreaterThanOrEqualTo, new DateTime(2020, 12, 2)) .Where(x => x.Name, OdooOperator.EqualsTo, "Bioboxen 610l") ; filters.Filters.Count.Should().Be(2); var json = JsonConvert.SerializeObject(filters.Filters); json.Should().Be("[[\"write_date\",\">=\",\"2020-12-02T00:00:00\"],[\"name\",\"=\",\"Bioboxen 610l\"]]"); filters.ReturnFields.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
//[Fact] public async Task Can_create_update_delete_product() { var odooClient = new OdooClient(Config); var model = new OdooCreateProduct() { Name = "Prod test Kg", UomId = 3, UomPoId = 3, InvoicePolicy = InvoicingPolicyOdooEnum.DeliveredQuantities }; var createResult = await odooClient.CreateAsync(model); createResult.Succeed.Should().BeTrue(); var createdProductId = createResult.Value; var query = OdooQuery <ProductProductOdooDto> .Create() .Where(x => x.Id, OdooOperator.EqualsTo, createdProductId); var products = await odooClient.GetAsync <ProductProductOdooDto>(query); products.Succeed.Should().BeTrue(); products.Value.Length.Should().Be(1); products.Value.First().Name.Should().Be(model.Name); model.Name += " update"; var updateProductResult = await odooClient.UpdateAsync(model, createdProductId); updateProductResult.Succeed.Should().BeTrue(); var query2 = OdooQuery <ProductProductOdooDto> .Create() .Where(x => x.Id, OdooOperator.EqualsTo, createdProductId); var products2 = await odooClient.GetAsync <ProductProductOdooDto>(query2); products2.Succeed.Should().BeTrue(); products2.Value.Length.Should().Be(1); products2.Value.First().Name.Should().Be(model.Name); var deleteProductResult = await odooClient.DeleteAsync(model.OdooTableName(), createdProductId); deleteProductResult.Succeed.Should().BeTrue(); deleteProductResult.Value.Should().BeTrue(); }
public void When_use_select_shoud_return_filds_with_odoo_prop_names() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Select(x => new { x.Name, x.Description }); filters.ReturnFields.Count.Should().Be(2); filters.ReturnFields.First().Should().Be("name"); filters.ReturnFields.ElementAt(1).Should().Be("description"); filters.Filters.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
public async Task Shoud_get_products_using_query_skip() { var odooClient = new OdooClient(TestConfig); var query = OdooQuery <ProductProductOdooModel> .Create().Skip(5); var products = await odooClient.GetAsync <ProductProductOdooModel>(query); var allProducts = await odooClient.GetAsync <ProductProductOdooModel>(); products.Error.Should().BeNull(); products.Value.Should().NotBeNull(); allProducts.Error.Should().BeNull(); allProducts.Value.Should().NotBeNull(); products.Value.Length.Should().Be(allProducts.Value.Length - 5); products.Succeed.Should().BeTrue(); }
public async Task Get_products_with_order_desc_query() { var odooClient = new OdooClient(Config); var query = OdooQuery <ProductProductOdooDto> .Create() .OrderByDescending(x => x.Id); var products = await odooClient.GetAsync <ProductProductOdooDto>(query); products.Error.Should().BeNull(); products.Value.Should().NotBeNull(); products.Value.Length.Should().BeGreaterThan(0); products.Succeed.Should().BeTrue(); var orderedByAsc = products.Value.OrderByDescending(p => p.Id); products.Value.SequenceEqual(orderedByAsc).Should().BeTrue(); }
public async Task Can_create_update_and_delete_product() { var odooClient = new OdooClient(TestConfig); var model = OdooDictionaryModel.Create(() => new ProductProductOdooModel { Name = "test name", UomId = 3, UomPoId = 3, CompanyId = 1 }); var createResult = await odooClient.CreateAsync(model); createResult.Error.Should().BeNull(); createResult.Succeed.Should().BeTrue(); var query = OdooQuery <ProductProductOdooModel> .Create() .ById(createResult.Value); var products = await odooClient.GetAsync <ProductProductOdooModel>(query); products.Succeed.Should().BeTrue(); products.Value.First().CompanyId.Should().Be(1); var dict = OdooDictionaryModel.Create(() => new ProductProductOdooModel { CompanyId = null }); var updateResult = await odooClient.UpdateAsync(dict, createResult.Value); updateResult.Succeed.Should().BeTrue(); var products2 = await odooClient.GetAsync <ProductProductOdooModel>(query); products2.Succeed.Should().BeTrue(); products2.Value.First().CompanyId.Should().BeNull(); var deleteResult = await odooClient.DeleteAsync(products2.Value.First()); deleteResult.Succeed.Should().BeTrue(); }
public void When_use_select_with_anymous_model_shoud_return_correct_filters_model() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Select(x => new { x.Name, x.Description, x.WriteDate }); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); filters.Filters.Count.Should().Be(0); filters.ReturnFields.Count.Should().Be(3); filters.ReturnFields.First().Should().Be("name"); filters.ReturnFields.Skip(1).First().Should().Be("description"); filters.ReturnFields.Skip(2).First().Should().Be("write_date"); }
public async Task Should_get_products_with_selected_properties_using_query() { var odooClient = new OdooClient(Config); var filters = OdooQuery <ProductProductOdooDto> .Create() .Select(x => new { x.Name, x.Description, x.WriteDate }) .Where(x => x.Name, OdooOperator.EqualsTo, "Bioboxen 610l") .Where(x => x.WriteDate, OdooOperator.GreaterThanOrEqualTo, new DateTime(2020, 12, 2)); var products = await odooClient.GetAsync <ProductProductOdooDto>(filters); products.Error.Should().BeNull(); products.Value.Should().NotBeNull(); products.Value.Length.Should().Be(1); products.Succeed.Should().BeTrue(); }
public void When_use_pridicate_where_with_two_forgin_key_shoud_return_correct_filters_model() { var filters = OdooQuery <ProductProductOdooModel> .Create() .Where <ResCompanyOdooModel, AccountTaxOdooModel>(x => x.PropertyAccountExpenseId, x => x.AccountSaleTaxId, x => x.CountryCode, OdooOperator.EqualsTo, "BE"); filters.Filters.Count.Should().Be(1); filters.Filters[0].Should().NotBeNull(); var arr = filters.Filters[0] as ArrayList; arr[0].Should().Be("property_account_expense_id.account_sale_tax_id.country_code"); arr[1].Should().Be("="); arr[2].Should().Be("BE"); var json = JsonConvert.SerializeObject(filters.Filters); json.Should().Be("[[\"property_account_expense_id.account_sale_tax_id.country_code\",\"=\",\"BE\"]]"); filters.ReturnFields.Count.Should().Be(0); filters.Limit.Should().BeNull(); filters.Offset.Should().BeNull(); }
public async Task Can_create_update_get_and_delete_customer() { var model = OdooDictionaryModel.Create(() => new ResPartnerOdooModel() { Name = "dupa", CountryId = 20, City = "dupa", Zip = "dupa", Street = "dupa", CompanyType = CompanyTypeResPartnerOdooEnum.Individual }); var odooClient = new OdooClient(TestConfig); var products = await odooClient.CreateAsync(model); products.Succeed.Should().BeTrue(); products.Value.Should().BePositive(); model.Add(x => x.Name, "new name"); var editedCustomer = await odooClient.UpdateAsync(model, products.Value); editedCustomer.Succeed.Should().BeTrue(); var query = new OdooQuery(); query.Filters.EqualTo("id", products.Value); var customers = await odooClient.GetAsync <ResPartnerOdooModel>(query); customers.Succeed.Should().BeTrue(); customers.Value.Length.Should().Be(1); customers.Value.First().Name.Should().Be("new name"); var deleteResult = await odooClient.DeleteAsync(customers.Value.First()); deleteResult.Succeed.Should().BeTrue(); }
public async Task<OdooResult<long>> GetCountAsync<T>(int userUid, OdooQuery query = null, OdooContext context = null) where T : IOdooModel, new() { return await GetCountAsync<T>(Config, userUid, query, SelectContext(context , Config.Context)); }
public async Task <OdooResult <long> > GetCountAsync <T>(OdooQuery query = null) where T : IOdooModel, new() { return(await ExecuteWitrAccesDenideRetryAsync(userUid => GetCountAsync <T>(userUid, query))); }
public async Task <OdooResult <long> > GetCountAsync <T>(int userUid, OdooQuery query = null) where T : IOdooModel, new() { return(await GetCountAsync <T>(_config, userUid, query)); }
public static async Task <OdooResult <long> > GetCountAsync <T>(OdooConfig odooConfig, int userUid, OdooQuery query = null) where T : IOdooModel, new() { var tableName = OdooExtensions.GetOdooTableName <T>(); var request = OdooRequestModel.SearchCount(odooConfig, userUid, tableName, query); return(await CallAndDeserializeAsync <long>(request)); }
public async Task<OdooResult<long>> GetCountAsync<T>(OdooQuery query = null, OdooContext context = null) where T : IOdooModel, new() { return await ExecuteWitrAccesDenideRetryAsync(userUid => GetCountAsync<T>(userUid, query, SelectContext(context , Config.Context))); }
public void RequestModel_should_return_request_with_corect_params_count() { var query = new OdooQuery() { ReturnFields = new HashSet <string> { "name" }, Filters = new OdooFilter { new object[] { "id", "=", 66 } } }; var request = OdooRequestModel.SearchRead(Config, 2, "table", query); request.Params.Args.Length.Should().Be(7); var query2 = new OdooQuery() { Filters = new OdooFilter { new object[] { "id", "=", 66 } } }; var request2 = OdooRequestModel.SearchRead(Config, 2, "table", query2); request2.Params.Args.Length.Should().Be(6); var query3 = new OdooQuery() { ReturnFields = new HashSet <string> { "name" } }; var request3 = OdooRequestModel.SearchRead(Config, 2, "table", query3); request3.Params.Args.Length.Should().Be(7); var request4 = OdooRequestModel.SearchRead(Config, 2, "table"); request4.Params.Args.Length.Should().Be(5); var query5 = new OdooQuery() { Offset = 10 }; var request5 = OdooRequestModel.SearchRead(Config, 2, "table", query5); request5.Params.Args.Length.Should().Be(8); var query6 = new OdooQuery() { Limit = 10 }; var request6 = OdooRequestModel.SearchRead(Config, 2, "table", query6); request6.Params.Args.Length.Should().Be(9); var query7 = new OdooQuery() { Order = "id" }; var request7 = OdooRequestModel.SearchRead(Config, 2, "table", query7); request7.Params.Args.Length.Should().Be(10); var queryTest = new OdooQuery() { ReturnFields = new HashSet <string> { "name" }, Filters = OdooFilter.Create().EqualTo("id", 66) }; var requestTest = OdooRequestModel.SearchRead(Config, 2, "table", queryTest); requestTest.Params.Args.Length.Should().Be(7); }
public static async Task<OdooResult<T[]>> GetAsync<T>(OdooConfig odooConfig, int userUid, OdooQuery query = null, OdooContext context = null) where T : IOdooModel, new() { var tableName = OdooExtensions.GetOdooTableName<T>(); var request = OdooRequestModel.SearchRead(odooConfig, userUid, tableName, query, context); return await CallAndDeserializeAsync<T[]>(request); }