Getting Started

Prerequisites

  • JDK 8+
  • JUnit 5 platform
  • jqwik 1.7.0

Installation

Gradle

testImplementation("com.navercorp.fixturemonkey:fixture-monkey-starter:1.1.8")

Maven

<dependency>
  <groupId>com.navercorp.fixturemonkey</groupId>
  <artifactId>fixture-monkey-starter</artifactId>
  <version>1.1.8</version>
  <scope>test</scope>
</dependency>

Try Fixture Monkey

Class

@Data
@EqualsAndHashCode(of = "id", callSuper = false)
public class OrderSheet {
	private String id;

	private String backUrl;

	private Long userNo;

	@Size(min = 1, max = 1)
	private List<OrderSheetProduct> products;
	private Map.Entry<Long, OrderSheetMerchant> merchantsByMerchantNo;

	private Instant registeredDateTime;

	@Size(min = 1, max = 1)
	private Map<String, OrderSheetBundleDeliveryFee> bundleDeliveryFeesByDeliveryGroupKey;

	@Data
	@EqualsAndHashCode(of = "id", callSuper = false)
	public static class OrderSheetProduct {
		String id;

		String productName;

		BigDecimal salePrice;

		String ecMallProductId;

		@Size(min = 1, max = 1)
		List<OrderSheetItem> items;

		OrderSheetDeliveryPolicy deliveryPolicy;

		long merchantNo;

		String merchantCategoryItemTypeName;

		String wholeCategoryId;

		boolean naverBenefit;

		OrderSheetDeliveryFee deliveryFee;

		OrderSheetRewardPointPolicy rewardPointPolicy;
	}

	@Data
	@EqualsAndHashCode(of = "id", callSuper = false)
	public static class OrderSheetItem {

		String id;

		String itemNo;

		BigDecimal price;

		Long quantity;

		BigDecimal orderAmount;

		@Size(min = 1, max = 1)
		List<OrderSheetElement> elements;
	}

	@Data
	public static class OrderSheetElement {
		String id;

		ElementType elementType;

		@Size(min = 1, max = 1)
		List<String> names;

		@Size(min = 1, max = 1)
		List<String> valueIds;

		@Size(min = 1, max = 1)
		List<String> texts;
	}

	@Data
	public static class OrderSheetMerchant {
		String talkInterlockAccountId;

		String logeyeRequestId;

		String logeyeInflowPathName;

		Boolean logeyePayAccumulation;
	}

	@Data
	public static class OrderSheetDeliveryPolicy {
		DeliveryMethodType deliveryMethodType;

		DeliveryFeeClassType deliveryFeeClassType;

		DeliveryFeePayType deliveryFeePayType;

		BigDecimal baseFee;

		OrderSheetDeliveryBundlePolicy bundlePolicy;

		BigDecimal freeConditionalAmount;
	}

	@Data
	public static class OrderSheetDeliveryBundlePolicy {
		String bundleGroupId;
	}

	@Data
	public static class OrderSheetDeliveryFee {
		BigDecimal deliveryFee;

		String deliveryGroupKey;
	}

	@Data
	public static class OrderSheetBundleDeliveryFee {
		BigDecimal deliveryFee;

		BundleType type;
	}

	@Data
	public static class OrderSheetRewardPointPolicy {
		Long purchasePolicyNo;

		BigDecimal purchaseAccumulateAmount;
	}

	public enum DeliveryMethodType {
		DELIVERY,
		VISIT_RECEIPT,
		DIRECT_DELIVERY,
		QUICK_SVC,
		NOTHING
	}

	public enum ElementType {
		OPTION,
		CUSTOM
	}

	public enum DeliveryFeeClassType {
		CHARGE,
		FREE
	}

	public enum DeliveryFeePayType {
		PRE_PAY,
		AFTER_PAY,
		FREE
	}

	public enum BundleType {
		MANUALLY,
		IDENTICAL_PRODUCT
	}
}

Usage

FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
	.plugin(new JavaxValidationPlugin())
    .build();

OrderSheet orderSheet = fixtureMonkey.giveMeOne(OrderSheet.class);