package ua.kpi.ecampus.util;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import ua.kpi.ecampus.model.pojo.Bulletin;
import static org.junit.Assert.assertEquals;
import static ua.kpi.ecampus.util.BulletinPredicates.filterBulletins;
import static ua.kpi.ecampus.util.BulletinPredicates.isDeleted;
import static ua.kpi.ecampus.util.BulletinPredicates.isMatchesProfile;
import static ua.kpi.ecampus.util.BulletinPredicates.isMatchesQuerySubject;
import static ua.kpi.ecampus.util.BulletinPredicates.isMatchesSubdivision;
import static ua.kpi.ecampus.util.BulletinPredicates.isNotExpired;
/**
* Created by Administrator on 19.05.2016.
*/
public class BulletinPredicatesTest {
private Collection<Bulletin> mData = new ArrayList<>();
@Before
public void setUp() {
mData = bulletinList();
}
@Test
public void matchProfile() {
int actual = filterBulletins(mData, isMatchesProfile(stubIds())).size();
assertEquals(2, actual);
}
@Test
public void matchSubdivision() {
int actual = filterBulletins(mData, isMatchesSubdivision(stubIds()))
.size();
assertEquals(2, actual);
}
@Test
public void deleted() {
int actual = filterBulletins(mData, isDeleted()).size();
assertEquals(1, actual);
}
@Test
public void matchQueryBySubject() {
int actual = filterBulletins(mData, isMatchesQuerySubject("a")).size();
assertEquals(1, actual);
actual = filterBulletins(mData, isMatchesQuerySubject("dd")).size();
assertEquals(0, actual);
}
@Test
public void notExpired() {
int actual = filterBulletins(mData, isNotExpired("2016-05-19")).size();
assertEquals(3, actual);
actual = filterBulletins(mData, isNotExpired("2017-05-25")).size();
assertEquals(0, actual);
}
private List<Integer> stubIds() {
return new ArrayList<Integer>() {{
add(0);
add(1);
}};
}
private List<Bulletin> bulletinList() {
List<Bulletin> list = new ArrayList<>();
Bulletin b = new Bulletin("1", "a", "a", "2016", "2016-05-19",
"2017-05-19", true, null);
b.setProfileId(1);
b.setSubdivisionId(1);
list.add(b);
b = new Bulletin("2", "b", "b", "2016", "2016-05-19",
"2017-05-19", true, null);
b.setProfileId(0);
b.setSubdivisionId(0);
list.add(b);
b = new Bulletin("3", "c", "c", "2016", "2016-05-01",
"2017-05-02", false, null);
b.setProfileId(4);
b.setSubdivisionId(4);
list.add(b);
return list;
}
}