package gov.nysenate.openleg.processor.hearing; import gov.nysenate.openleg.BaseTests; import gov.nysenate.openleg.model.entity.Chamber; import gov.nysenate.openleg.model.hearing.PublicHearingCommittee; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import java.io.IOException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import static org.junit.Assert.assertEquals; public class PublicHearingCommitteeParserTest extends BaseTests { private PublicHearingCommitteeParser committeeParser; @Before public void setup() { committeeParser = new PublicHearingCommitteeParser(); } @Test public void basicCommitteeParse() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "06-02-14 NYsenate_Labor_Savino_FINAL.txt"); List<PublicHearingCommittee> expected = new ArrayList<>(); PublicHearingCommittee expectedCommittee = new PublicHearingCommittee(); expectedCommittee.setName("LABOR"); expectedCommittee.setChamber(Chamber.SENATE); expected.add(expectedCommittee); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } @Test public void basicTaskForceParse() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "06-04-14 NYsenate Heroin-Opioid Addiction Special Task Force_Seneca Nation_FINAL.txt"); List<PublicHearingCommittee> expected = new ArrayList<>(); PublicHearingCommittee expectedCommittee = new PublicHearingCommittee(); expectedCommittee.setName("HEROIN AND OPIOID ADDICTION"); expectedCommittee.setChamber(Chamber.SENATE); expected.add(expectedCommittee); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } @Test public void multipleCommitteesParse() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "09-17-13 Carlucci_Mental Health_Ogdensburg_FINAL.txt"); PublicHearingCommittee expectedCommittee1 = new PublicHearingCommittee(); expectedCommittee1.setName("MENTAL HEALTH AND ENVIRONMENTAL DISABILITIES"); expectedCommittee1.setChamber(Chamber.ASSEMBLY); PublicHearingCommittee expectedCommittee2 = new PublicHearingCommittee(); expectedCommittee2.setName("MENTAL HEALTH AND ENVIRONMENTAL DISABILITIES"); expectedCommittee2.setChamber(Chamber.SENATE); PublicHearingCommittee expectedCommittee3 = new PublicHearingCommittee(); expectedCommittee3.setName("HEALTH"); expectedCommittee3.setChamber(Chamber.SENATE); List<PublicHearingCommittee> expected = new ArrayList<>(); expected.add(expectedCommittee1); expected.add(expectedCommittee2); expected.add(expectedCommittee3); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } @Test public void noWhiteSpaceInCommitteeName() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "02-09-12 ChildCareHearing_Final.txt"); PublicHearingCommittee expectedCommittee1 = new PublicHearingCommittee(); expectedCommittee1.setName("SOCIAL SERVICES"); expectedCommittee1.setChamber(Chamber.SENATE); PublicHearingCommittee expectedCommittee2 = new PublicHearingCommittee(); expectedCommittee2.setName("CHILDREN AND FAMILIES"); expectedCommittee2.setChamber(Chamber.SENATE); List<PublicHearingCommittee> expected = new ArrayList<>(); expected.add(expectedCommittee1); expected.add(expectedCommittee2); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } // TODO: This test fails, file: 03-01-12 NYS Joint 3-Committee Hearing_Final.txt // This files committees are not correct! @Ignore @Test public void anotherMultipleCommitteesParse() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "03-01-12 NYS Joint 3-Committee Hearing_Final.txt"); PublicHearingCommittee expectedCommittee1 = new PublicHearingCommittee(); expectedCommittee1.setName("INVESTIGATIONS AND GOVERNMENT OPERATIONS"); expectedCommittee1.setChamber(Chamber.SENATE); PublicHearingCommittee expectedCommittee2 = new PublicHearingCommittee(); expectedCommittee2.setName("CIVIL SERVICE AND PENSIONS"); expectedCommittee2.setChamber(Chamber.SENATE); PublicHearingCommittee expectedCommittee3 = new PublicHearingCommittee(); expectedCommittee3.setName("RACING, GAMING, AND WAGERING"); expectedCommittee3.setChamber(Chamber.SENATE); List<PublicHearingCommittee> expected = new ArrayList<>(); expected.add(expectedCommittee1); expected.add(expectedCommittee2); expected.add(expectedCommittee3); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } @Test public void emptyCommitteeParses() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "03-12-14 Roundtable on the Compassionate Care Act_Savino_FINAL.txt"); List<PublicHearingCommittee> expected = new ArrayList<>(); PublicHearingCommittee expectedCommittee = new PublicHearingCommittee(); expectedCommittee.setName(""); expectedCommittee.setChamber(Chamber.SENATE); expected.add(expectedCommittee); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } @Test public void missingCommitteeParses() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "01-03-13 HurricaneSandy_NYS TaskForce Roundtable_Final.txt"); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(null, actual); } @Test public void majorityCoalitionParses() throws IOException, URISyntaxException { List<List<String>> pages = PublicHearingTestHelper.getPagesFromFileName( "09-11-13 NYS Majority Coalition Forum_Buffalo_ FINAL.txt"); List<PublicHearingCommittee> expected = new ArrayList<>(); PublicHearingCommittee expectedCommittee = new PublicHearingCommittee(); expectedCommittee.setName("MAJORITY COALITION"); expectedCommittee.setChamber(Chamber.SENATE); expected.add(expectedCommittee); List<PublicHearingCommittee> actual = committeeParser.parse(pages.get(0)); assertEquals(expected, actual); } }