public static TaxRateDraftBuilder of(final String name, final double amount, final boolean includedInPrice, final CountryCode country) { return new TaxRateDraftBuilder(name, amount, includedInPrice, country); }
@Test public void replaceTaxRate() { withUpdateableTaxCategory(client(), taxCategory -> { final TaxRate old = taxCategory.getTaxRates().get(0); final double newAmount = old.getAmount() * 2; final TaxRateDraft newTaxRate = TaxRateDraftBuilder.of(old).amount(newAmount).build(); final TaxCategory updatedTaxCategory = client().executeBlocking(TaxCategoryUpdateCommand.of(taxCategory, ReplaceTaxRate.of(old.getId(), newTaxRate))); final TaxRate actual = updatedTaxCategory.getTaxRates().get(0); assertThat(actual.getCountry()).isEqualTo(old.getCountry()); assertThat(actual.getAmount()).isEqualTo(newAmount); assertThat(actual.getName()).isEqualTo(old.getName()); return updatedTaxCategory; }); } }
public static TaxRateDraftBuilder of(final String name, final double amount, final boolean includedInPrice, final CountryCode country) { return new TaxRateDraftBuilder(name, amount, includedInPrice, country); }
public static void withTaxCategory(final BlockingSphereClient client, final String name, final Consumer<TaxCategory> user) { final TaxCategoryDraft de19 = TaxCategoryDraft.of(name, singletonList(TaxRateDraftBuilder.of("de19", 0.19, true, CountryCode.DE).build())); withTaxCategory(client, de19, user); }
@Test public void createByJson() { final TaxCategoryDraft draft = SphereJsonUtils.readObjectFromResource("drafts-tests/taxCategory.json", TaxCategoryDraft.class); withTaxCategory(client(), draft, taxCategory -> { assertThat(taxCategory.getName()).isEqualTo("a tax category"); final TaxRateDraft taxRate = TaxRateDraftBuilder.of(taxCategory.getTaxRates().get(0)).build(); final TaxRateDraft expectedTaxRate = TaxRateDraftBuilder.of("default-tax", 0.19, true, CountryCode.DE).build(); assertThat(taxRate).isEqualTo(expectedTaxRate); }); } }
public static void withUpdateableTaxCategory(final BlockingSphereClient client, final UnaryOperator<TaxCategory> testApplicationFunction) { final TaxCategoryDraft draft = TaxCategoryDraft.of(randomKey(), singletonList(TaxRateDraftBuilder.of("de19", 0.19, true, CountryCode.DE).build())); final PagedQueryResult<TaxCategory> results = client.executeBlocking(TaxCategoryQuery.of().byName(draft.getName())); results.getResults().forEach(tc -> client.executeBlocking(TaxCategoryDeleteCommand.of(tc))); final TaxCategory taxCategory = client.executeBlocking(TaxCategoryCreateCommand.of(draft)); final TaxCategory updated = testApplicationFunction.apply(taxCategory); client.executeBlocking(TaxCategoryDeleteCommand.of(updated)); } }
@Test public void addTaxRate() { withUpdateableTaxCategory(client(), taxCategory -> { //add tax rate final String name = "ag7"; final CountryCode countryCode = CountryCode.AG; final TaxRateDraft de7 = TaxRateDraftBuilder.of(name, 0.07, true, countryCode).build(); final TaxCategory taxCategoryWithTaRate = client().executeBlocking(TaxCategoryUpdateCommand.of(taxCategory, AddTaxRate.of(de7))); final TaxRate actual = taxCategoryWithTaRate.getTaxRates().stream().filter(rate -> name.equals(rate.getName())).findFirst().get(); assertThat(actual.getCountry()).isEqualTo(countryCode); assertThat(actual.getAmount()).isEqualTo(0.07); assertThat(actual.getId()) .overridingErrorMessage("the tax rate fetched from API has an id") .isNotNull(); assertThat(actual.getName()).isEqualTo(de7.getName()); //remove tax rate final TaxCategory updatedTaxCategory = client().executeBlocking(TaxCategoryUpdateCommand.of(taxCategoryWithTaRate, RemoveTaxRate.of(actual.getId()))); assertThat(updatedTaxCategory.getTaxRates()).matches(rates -> !rates.stream().anyMatch(rate -> name.equals(rate.getName()))); return updatedTaxCategory; }); }
private static void withTaxedAndPricedProduct(final BlockingSphereClient client, final long centAmount, final double taxRate, final boolean taxIncluded, final Consumer<Product> operator) { final List<TaxRateDraft> taxRateDrafts = singletonList(TaxRateDraftBuilder.of(randomKey(), taxRate, taxIncluded, CountryCode.DE).build()); final TaxCategoryDraft taxCategoryDraft = TaxCategoryDraft.of(randomString(), taxRateDrafts); withTaxCategory(client, taxCategoryDraft, taxCategory -> withProduct(client, product -> { final PriceDraft priceDraft = PriceDraft.of(MoneyImpl.ofCents(centAmount, EUR)).withCountry(DE); final ProductUpdateCommand setPricesCmd = ProductUpdateCommand.of(product, asList( AddPrice.of(MASTER_VARIANT_ID, priceDraft), SetTaxCategory.of(taxCategory), Publish.of())); final Product productWithPrice = client.executeBlocking(setPricesCmd); operator.accept(productWithPrice); }) ); } }
@Test public void deleteByVersioned() { final List<TaxRateDraft> taxRates = singletonList(TaxRateDraftBuilder.of("de19", 0.19, true, CountryCode.DE).build()); final TaxCategoryDraft taxCategoryDraft = TaxCategoryDraftBuilder.of(randomKey(), taxRates, "tax category description") .build(); final TaxCategory taxCategory = client().executeBlocking(TaxCategoryCreateCommand.of(taxCategoryDraft)); final String taxCategoryId = taxCategory.getId(); client().executeBlocking(TaxCategoryDeleteCommand.of(taxCategory)); final TaxCategory deletedTaxCategory = client().executeBlocking(TaxCategoryByIdGet.of(taxCategoryId)); assertThat(deletedTaxCategory).isNull(); }
@Test public void deleteByKey() { final String key = randomKey(); final List<TaxRateDraft> taxRates = singletonList(TaxRateDraftBuilder.of("de19", 0.19, true, CountryCode.DE).build()); final TaxCategoryDraft taxCategoryDraft = TaxCategoryDraftBuilder.of(randomKey(), taxRates, "tax category description") .key(key) .build(); final TaxCategory taxCategory = client().executeBlocking(TaxCategoryCreateCommand.of(taxCategoryDraft)); client().executeBlocking(TaxCategoryDeleteCommand.ofKey(taxCategory.getKey(), taxCategory.getVersion())); final TaxCategory deletedTaxCategory = client().executeBlocking(TaxCategoryByKeyGet.of(key)); assertThat(deletedTaxCategory).isNull(); } }