/*******************************************************************************
* Copyright (c) 2014 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package com.eclipsesource.tabris.tracking;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.math.BigDecimal;
import java.util.List;
import org.junit.Test;
public class OrderTest {
@Test( expected = IllegalArgumentException.class )
public void testFailsWithNullId() {
new Order( null, BigDecimal.ONE );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsWithEmptyId() {
new Order( "", BigDecimal.ONE );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsWithNullTotal() {
new Order( "foo", null );
}
@Test
public void testIsEqual() {
Order order = new Order( "foo", BigDecimal.ONE );
Order order2 = new Order( "foo", BigDecimal.ONE );
assertEquals( order, order2 );
}
@Test
public void testHasId() {
Order order = new Order( "foo", BigDecimal.ONE );
String id = order.getOrderId();
assertEquals( "foo", id );
}
@Test
public void testHasTotal() {
Order order = new Order( "foo", BigDecimal.ONE );
BigDecimal total = order.getTotal();
assertEquals( BigDecimal.ONE, total );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsToSetNullShipment() {
Order order = new Order( "foo", BigDecimal.ONE );
order.setShipping( null );
}
@Test
public void testHasDefaultShipment() {
Order order = new Order( "foo", BigDecimal.ONE );
BigDecimal shipment = order.getShipping();
assertEquals( BigDecimal.valueOf( 0 ), shipment );
}
@Test
public void testHasShipment() {
Order order = new Order( "foo", BigDecimal.ONE );
order.setShipping( BigDecimal.valueOf( 2 ) );
BigDecimal shipment = order.getShipping();
assertEquals( BigDecimal.valueOf( 2 ), shipment );
}
@Test
public void testSetShipmentReturnsOrder() {
Order order = new Order( "foo", BigDecimal.ONE );
Order actualOrder = order.setShipping( BigDecimal.valueOf( 2 ) );
assertSame( order, actualOrder );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsToSetNullTax() {
Order order = new Order( "foo", BigDecimal.ONE );
order.setTax( null );
}
@Test
public void testHasDefaultTax() {
Order order = new Order( "foo", BigDecimal.ONE );
BigDecimal tax = order.getTax();
assertEquals( BigDecimal.valueOf( 0 ), tax );
}
@Test
public void testHasTax() {
Order order = new Order( "foo", BigDecimal.ONE );
order.setTax( BigDecimal.valueOf( 3 ) );
BigDecimal tax = order.getTax();
assertEquals( BigDecimal.valueOf( 3 ), tax );
}
@Test
public void testSetTaxReturnsOrder() {
Order order = new Order( "foo", BigDecimal.ONE );
Order actualOrder = order.setTax( BigDecimal.valueOf( 3 ) );
assertSame( order, actualOrder );
}
@Test
public void testAddsItem() {
Order order = new Order( "foo", BigDecimal.ONE );
OrderItem item = new OrderItem( "bar" );
order.addItem( item );
List<OrderItem> items = order.getItems();
assertSame( items.get( 0 ), item );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsToAddNullItem() {
Order order = new Order( "foo", BigDecimal.ONE );
order.addItem( null );
}
@Test
public void testRemovesItem() {
Order order = new Order( "foo", BigDecimal.ONE );
OrderItem item = new OrderItem( "bar" );
order.addItem( item );
order.removeItem( item );
List<OrderItem> items = order.getItems();
assertTrue( items.isEmpty() );
}
@Test( expected = IllegalArgumentException.class )
public void testFailsToRemoveNullItem() {
Order order = new Order( "foo", BigDecimal.ONE );
OrderItem item = new OrderItem( "bar" );
order.addItem( item );
order.removeItem( null );
}
@Test
public void testItemsAreSafeCopy() {
Order order = new Order( "foo", BigDecimal.ONE );
OrderItem item = new OrderItem( "bar" );
List<OrderItem> items = order.getItems();
order.addItem( item );
List<OrderItem> items2 = order.getItems();
assertSame( items2.get( 0 ), item );
assertTrue( items.isEmpty() );
}
}