package com.yummynoodlebar.rest.controller.fixture;
import com.yummynoodlebar.core.events.orders.*;
import com.yummynoodlebar.rest.domain.Order;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
//TODOCUMENT. Use of test data fixture classes is considered good practice.
/*
The majority of tests aren't testing data edge cases, they are testing logical flows and
what happens to a generic set of data. For these, use a small, standardised set of fixtures.
For anything more esoteric, create a new fixture in the test class.
*/
public class RestDataFixture {
public static final String YUMMY_ITEM = "yummy1";
public static AllOrdersEvent allOrders() {
List<OrderDetails> orders = new ArrayList<OrderDetails>();
orders.add(standardOrderDetails());
orders.add(standardOrderDetails());
orders.add(standardOrderDetails());
return new AllOrdersEvent(orders);
}
public static Order standardOrder() {
Order order = new Order();
order.setItems(Collections.singletonMap(YUMMY_ITEM, 12));
return order;
}
public static OrderDetails customKeyOrderDetails(UUID key) {
OrderDetails orderdetails = new OrderDetails(key);
orderdetails.setOrderItems(Collections.singletonMap(YUMMY_ITEM, 12));
return orderdetails;
}
public static OrderDetails standardOrderDetails() {
return customKeyOrderDetails(UUID.randomUUID());
}
public static String standardOrderJSON() {
return "{ \"items\": { \"yummy1\": 12, \"yummy15\": 42 } }";
}
}