Added tests for intercepting-filter pattern
This commit is contained in:
		@@ -14,7 +14,7 @@ public class NameFilter extends AbstractFilter {
 | 
			
		||||
    String result = super.execute(order);
 | 
			
		||||
    if (order.getName() == null || order.getName().isEmpty()
 | 
			
		||||
        || order.getName().matches(".*[^\\w|\\s]+.*")) {
 | 
			
		||||
      return result + "Invalid order! ";
 | 
			
		||||
      return result + "Invalid name! ";
 | 
			
		||||
    } else {
 | 
			
		||||
      return result;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,46 @@
 | 
			
		||||
package com.iluwatar.intercepting.filter;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.mockito.Matchers.any;
 | 
			
		||||
import static org.mockito.Mockito.mock;
 | 
			
		||||
import static org.mockito.Mockito.times;
 | 
			
		||||
import static org.mockito.Mockito.verify;
 | 
			
		||||
import static org.mockito.Mockito.verifyZeroInteractions;
 | 
			
		||||
import static org.mockito.Mockito.when;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/13/15 - 3:01 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public class FilterManagerTest {
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testFilterRequest() throws Exception {
 | 
			
		||||
    final Target target = mock(Target.class);
 | 
			
		||||
    final FilterManager filterManager = new FilterManager(target);
 | 
			
		||||
    assertEquals("RUNNING...", filterManager.filterRequest(mock(Order.class)));
 | 
			
		||||
    verifyZeroInteractions(target);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testAddFilter() throws Exception {
 | 
			
		||||
    final Target target = mock(Target.class);
 | 
			
		||||
    final FilterManager filterManager = new FilterManager(target);
 | 
			
		||||
 | 
			
		||||
    verifyZeroInteractions(target);
 | 
			
		||||
 | 
			
		||||
    final Filter filter = mock(Filter.class);
 | 
			
		||||
    when(filter.execute(any(Order.class))).thenReturn("filter");
 | 
			
		||||
 | 
			
		||||
    filterManager.addFilter(filter);
 | 
			
		||||
 | 
			
		||||
    final Order order = mock(Order.class);
 | 
			
		||||
    assertEquals("filter", filterManager.filterRequest(order));
 | 
			
		||||
 | 
			
		||||
    verify(filter, times(1)).execute(any(Order.class));
 | 
			
		||||
    verifyZeroInteractions(target, filter, order);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,95 @@
 | 
			
		||||
package com.iluwatar.intercepting.filter;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
import org.junit.runners.Parameterized;
 | 
			
		||||
import org.junit.runners.Parameterized.Parameters;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static junit.framework.TestCase.assertSame;
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.junit.Assert.assertNotNull;
 | 
			
		||||
import static org.junit.Assert.assertNull;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/13/15 - 2:17 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
@RunWith(Parameterized.class)
 | 
			
		||||
public class FilterTest {
 | 
			
		||||
 | 
			
		||||
  private static final Order PERFECT_ORDER = new Order("name", "12345678901", "addr", "dep", "order");
 | 
			
		||||
  private static final Order WRONG_ORDER = new Order("name", "12345678901", "addr", "dep", "");
 | 
			
		||||
  private static final Order WRONG_DEPOSIT = new Order("name", "12345678901", "addr", "", "order");
 | 
			
		||||
  private static final Order WRONG_ADDRESS = new Order("name", "12345678901", "", "dep", "order");
 | 
			
		||||
  private static final Order WRONG_CONTACT = new Order("name", "", "addr", "dep", "order");
 | 
			
		||||
  private static final Order WRONG_NAME = new Order("", "12345678901", "addr", "dep", "order");
 | 
			
		||||
 | 
			
		||||
  @Parameters
 | 
			
		||||
  public static List<Object[]> getTestData() {
 | 
			
		||||
    final List<Object[]> testData = new ArrayList<>();
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), PERFECT_ORDER, ""});
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), WRONG_NAME, "Invalid name!"});
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), WRONG_CONTACT, ""});
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), WRONG_ADDRESS, ""});
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), WRONG_DEPOSIT, ""});
 | 
			
		||||
    testData.add(new Object[]{new NameFilter(), WRONG_ORDER, ""});
 | 
			
		||||
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), PERFECT_ORDER, ""});
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), WRONG_NAME, ""});
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), WRONG_CONTACT, "Invalid contact number!"});
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), WRONG_ADDRESS, ""});
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), WRONG_DEPOSIT, ""});
 | 
			
		||||
    testData.add(new Object[]{new ContactFilter(), WRONG_ORDER, ""});
 | 
			
		||||
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), PERFECT_ORDER, ""});
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), WRONG_NAME, ""});
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), WRONG_CONTACT, ""});
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), WRONG_ADDRESS, "Invalid address!"});
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), WRONG_DEPOSIT, ""});
 | 
			
		||||
    testData.add(new Object[]{new AddressFilter(), WRONG_ORDER, ""});
 | 
			
		||||
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), PERFECT_ORDER, ""});
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), WRONG_NAME, ""});
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), WRONG_CONTACT, ""});
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), WRONG_ADDRESS, ""});
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), WRONG_DEPOSIT, "Invalid deposit number!"});
 | 
			
		||||
    testData.add(new Object[]{new DepositFilter(), WRONG_ORDER, ""});
 | 
			
		||||
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), PERFECT_ORDER, ""});
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), WRONG_NAME, ""});
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), WRONG_CONTACT, ""});
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), WRONG_ADDRESS, ""});
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), WRONG_DEPOSIT, ""});
 | 
			
		||||
    testData.add(new Object[]{new OrderFilter(), WRONG_ORDER, "Invalid order!"});
 | 
			
		||||
 | 
			
		||||
    return testData;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private final Filter filter;
 | 
			
		||||
  private final Order order;
 | 
			
		||||
  private final String result;
 | 
			
		||||
 | 
			
		||||
  public FilterTest(Filter filter, Order order, String result) {
 | 
			
		||||
    this.filter = filter;
 | 
			
		||||
    this.order = order;
 | 
			
		||||
    this.result = result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testExecute() throws Exception {
 | 
			
		||||
    final String result = this.filter.execute(this.order);
 | 
			
		||||
    assertNotNull(result);
 | 
			
		||||
    assertEquals(this.result, result.trim());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testNext() throws Exception {
 | 
			
		||||
    assertNull(this.filter.getNext());
 | 
			
		||||
    assertSame(this.filter, this.filter.getLast());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,51 @@
 | 
			
		||||
package com.iluwatar.intercepting.filter;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/13/15 - 2:57 PM
 | 
			
		||||
 *
 | 
			
		||||
 * @author Jeroen Meulemeester
 | 
			
		||||
 */
 | 
			
		||||
public class OrderTest {
 | 
			
		||||
 | 
			
		||||
  private static final String EXPECTED_VALUE = "test";
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testSetName() throws Exception {
 | 
			
		||||
    final Order order = new Order();
 | 
			
		||||
    order.setName(EXPECTED_VALUE);
 | 
			
		||||
    assertEquals(EXPECTED_VALUE, order.getName());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testSetContactNumber() throws Exception {
 | 
			
		||||
    final Order order = new Order();
 | 
			
		||||
    order.setContactNumber(EXPECTED_VALUE);
 | 
			
		||||
    assertEquals(EXPECTED_VALUE, order.getContactNumber());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testSetAddress() throws Exception {
 | 
			
		||||
    final Order order = new Order();
 | 
			
		||||
    order.setAddress(EXPECTED_VALUE);
 | 
			
		||||
    assertEquals(EXPECTED_VALUE, order.getAddress());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testSetDepositNumber() throws Exception {
 | 
			
		||||
    final Order order = new Order();
 | 
			
		||||
    order.setDepositNumber(EXPECTED_VALUE);
 | 
			
		||||
    assertEquals(EXPECTED_VALUE, order.getDepositNumber());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testSetOrder() throws Exception {
 | 
			
		||||
    final Order order = new Order();
 | 
			
		||||
    order.setOrder(EXPECTED_VALUE);
 | 
			
		||||
    assertEquals(EXPECTED_VALUE, order.getOrder());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user