Added tests for intercepting-filter pattern

This commit is contained in:
Jeroen Meulemeester
2015-12-13 15:18:13 +01:00
parent 9059d2b96c
commit de78490d29
5 changed files with 198 additions and 1 deletions

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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());
}
}

View File

@ -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());
}
}