Skip to content

Instantly share code, notes, and snippets.

@Jakemangan
Created July 7, 2018 18:14
Show Gist options
  • Save Jakemangan/5d4acffd313a4c780874e4bb0b85b268 to your computer and use it in GitHub Desktop.
Save Jakemangan/5d4acffd313a4c780874e4bb0b85b268 to your computer and use it in GitHub Desktop.
package test;
import static org.junit.Assert.*;
import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
import core.BrickOrder;
import core.OrderSystem;
public class OrderSystemTest {
private OrderSystem sys;
@Before
public void setup()
{
sys = new OrderSystem();
sys.getDb().clearDb();
}
/* A reference number must be returned after a new order
* has been created.
*/
@Test
public void testCreateOrderReturnsReference()
{
assertEquals(sys.createOrder(20), "BRICK1");
}
/*
* A reference number returned by a created order must be unique
* to the order that has just been created.
*/
@Test
public void testCreateOrderReturnsUniqueReference()
{
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1); //Create three orders
BrickOrder o = sys.getOrder("BRICK1"); //Get details of first order
assertFalse(o.getReferenceNumber().equals("BRICK2"));
assertFalse(o.getReferenceNumber().equals("BRICK3")); //Check ref number is unique
o = sys.getOrder("BRICK2"); //Get details of second order
assertFalse(o.getReferenceNumber().equals("BRICK1"));
assertFalse(o.getReferenceNumber().equals("BRICK3")); //Check ref number is unique
o = sys.getOrder("BRICK3"); //Get details of third order
assertFalse(o.getReferenceNumber().equals("BRICK2"));
assertFalse(o.getReferenceNumber().equals("BRICK1")); //Check ref number is unique
}
/*
* Reference numbers of created orders must follow the correct
* trend of increasing reference numbers.
*/
@Test
public void testCreateOrderSetsCorrectReference()
{
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1);
assertEquals(sys.createOrder(5), "BRICK7");
}
/*
* Created orders must set the number of bricks within the order object.
*/
@Test
public void testCreateOrderSetsNumberOfBricks()
{
sys.createOrder(15);
BrickOrder o = sys.getOrder("BRICK1");
assertEquals(o.getNumberOfBricks(), 15);
}
/*
* If a user tries to attempt to retrieve an order that doesn't
* exist or uses an invalid reference number, null is returned.
*/
@Test
public void testReturnOfInvalidOrderReturnsNothing()
{
assertTrue(sys.getOrder("ROCK1") == null);
}
/*
* When a specific reference number is used to retrieve
* an order from the database, the correct details of
* the order must be returned.
*/
@Test
public void testOrderDetailsReturnedCorrectly()
{
sys.createOrder(50);
sys.createOrder(43);
sys.createOrder(112);
BrickOrder o = sys.getOrder("BRICK2");
assertEquals(o.getReferenceNumber(), "BRICK2");
assertEquals(o.getNumberOfBricks(), 43);
}
/*
* When a "get orders" request is submitted, all of the active orders
* are returned in the form of an ArrayList. Each order's specific
* details are then accessible via the ArrayList get() method.
*/
@Test
public void testFullOrderListReturnedCorrectly()
{
sys.createOrder(10);
sys.createOrder(100);
sys.createOrder(1000); //Create three orders
ArrayList<BrickOrder> orderList = sys.getOrders(); //Return full order list
BrickOrder o = orderList.get(0);
assertEquals(o.getReferenceNumber(), "BRICK1");
assertEquals(o.getNumberOfBricks(), 10);
o = orderList.get(1);
assertEquals(o.getReferenceNumber(), "BRICK2");
assertEquals(o.getNumberOfBricks(), 100);
o = orderList.get(2);
assertEquals(o.getReferenceNumber(), "BRICK3");
assertEquals(o.getNumberOfBricks(), 1000);
}
/*
* The number of orders created in this session is recorded in
* the "createdOrders" variable. Correct function of this variable
* is crucial for correct reference number generation This variable
* is incremented by 1 each time the createOrder() method is called.
* This number does not decrease when orders are removed from the database.
*/
@Test
public void testOrdersCreatedIncrementsCorrectly()
{
assertEquals(sys.getOrdersCreated(), 0);
sys.createOrder(1);
sys.createOrder(1);
sys.createOrder(1);
assertEquals(sys.getOrdersCreated(), 3);
sys.removeOrder("BRICK2");
sys.removeOrder("BRICK3");
assertEquals(sys.getOrdersCreated(), 3);
sys.createOrder(1);
assertEquals(sys.getOrdersCreated(), 4);
}
/*
* After an order is successfully updated, the reference
* number from the order must be returned.
*/
@Test
public void testUpdateOrderReturnsCorrectReferenceNumber()
{
sys.createOrder(5);
assertEquals(sys.updateOrder("BRICK1", 10), "BRICK1");
}
@Test
public void testUpdateOrderUpdatesOrderDetailsCorrectly()
{
sys.createOrder(5); //Create initial order
sys.updateOrder("BRICK1", 100); //Update order with matching reference number
BrickOrder o = sys.getOrder("BRICK1"); //Pull order information from db
assertEquals(o.getNumberOfBricks(), 100); //Ensure order details have been updated.
}
@Test
public void testUpdateOrderHandlesInvalidReferenceNumber()
{
sys.createOrder(5); //Create initial order
assertEquals(sys.updateOrder("ROCK1", 100), "No order with reference number ROCK1 in database."); //Update order with matching reference number
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment