// Copyright 2011 Google Inc. All Rights Reseved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.testing.testify.risk.frontend.model; import com.google.common.collect.Lists; import junit.framework.TestCase; /** * Tests for Filter and FilterOption. * * @author jimr@google.com (Jim Reardon) */ public class FilterTest extends TestCase { public void testFilterFields() { Filter filter = new Filter(); filter.setFilterType(DatumType.BUGS); filter.setId(123L); filter.setFilterConjunction("and"); FilterOption option = new FilterOption(); option.setId("fo1"); option.setType("Title"); option.setValue("search"); option.setFilter(filter); filter.setFilterOptions(Lists.newArrayList(option)); filter.setParentProjectId(86L); assertEquals(null, filter.getTargetAttributeId()); assertEquals(null, filter.getTargetCapabilityId()); assertEquals(null, filter.getTargetComponentId()); filter.setTargetAttributeId(54L); filter.setTargetCapabilityId(99L); filter.setTargetComponentId(23L); assertEquals("Bug Filter", filter.getTitle()); assertEquals(DatumType.BUGS, filter.getFilterType()); assertEquals(123L, filter.getId().longValue()); assertEquals("and", filter.getFilterConjunction()); assertEquals(1, filter.getFilterOptions().size()); option = filter.getFilterOptions().get(0); assertEquals("fo1", option.getId()); assertEquals("Title", option.getType()); assertEquals("search", option.getValue()); assertEquals(filter, option.getFilter()); assertEquals(86L, filter.getParentProjectId()); assertEquals(54L, filter.getTargetAttributeId().longValue()); assertEquals(99L, filter.getTargetCapabilityId().longValue()); assertEquals(23L, filter.getTargetComponentId().longValue()); filter.addFilterOption("Title", "title search"); assertEquals(2, filter.getFilterOptions().size()); } private Filter makeFilter() { Filter filter = new Filter(); filter.setFilterType(DatumType.BUGS); return filter; } public void testFilter_mismatch() { Filter filter = makeFilter(); Checkin checkin = new Checkin(); try { filter.apply(checkin); fail("didn't throw with mismatched filter"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().contains("do not match")); } } public void testFilter_noOptions() { Filter filter = makeFilter(); filter.setFilterConjunction("any"); filter.setTargetAttributeId(123L); Bug bug = new Bug(); filter.apply(bug); assertEquals(null, bug.getTargetAttributeId()); } public void testAndFilter_matches() { Filter filter = makeFilter(); filter.setFilterConjunction("and"); filter.addFilterOption("Title", "security"); filter.addFilterOption("Labels", "sec"); Bug bug = new Bug(); bug.setTitle("Error with security settings in IE6"); bug.addBugGroup("dorp"); bug.addBugGroup("sec"); bug.addBugGroup("monday"); filter.setTargetAttributeId(123L); filter.setTargetCapabilityId(456L); filter.setTargetComponentId(987L); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); filter.apply(bug); assertEquals(bug.getTargetAttributeId().longValue(), 123L); assertEquals(bug.getTargetCapabilityId().longValue(), 456L); assertEquals(bug.getTargetComponentId().longValue(), 987L); } public void testAndFilter_noMatch() { Filter filter = makeFilter(); filter.setFilterConjunction("and"); filter.addFilterOption("Title", "security"); filter.addFilterOption("Labels", "sec"); filter.addFilterOption("Labels", "tuesday"); Bug bug = new Bug(); bug.setTitle("Error with security settings in IE6"); bug.addBugGroup("dorp"); bug.addBugGroup("sec"); bug.addBugGroup("monday"); filter.setTargetAttributeId(123L); filter.setTargetCapabilityId(456L); filter.setTargetComponentId(987L); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); filter.apply(bug); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); } public void testAnyFilter_matches() { Filter filter = makeFilter(); filter.setFilterConjunction("any"); filter.addFilterOption("Title", "security"); filter.addFilterOption("Labels", "sec"); filter.addFilterOption("Labels", "tuesday"); Bug bug = new Bug(); bug.setTitle("Error with security settings in IE6"); bug.addBugGroup("dorp"); bug.addBugGroup("sec"); bug.addBugGroup("monday"); filter.setTargetAttributeId(123L); filter.setTargetCapabilityId(456L); filter.setTargetComponentId(987L); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); filter.apply(bug); assertEquals(bug.getTargetAttributeId().longValue(), 123L); assertEquals(bug.getTargetCapabilityId().longValue(), 456L); assertEquals(bug.getTargetComponentId().longValue(), 987L); } public void testAnyFilter_noMatch() { Filter filter = makeFilter(); filter.setFilterConjunction("any"); filter.addFilterOption("Title", "security"); filter.addFilterOption("Labels", "sec"); filter.addFilterOption("Labels", "tuesday"); Bug bug = new Bug(); bug.setTitle("Error with UI"); bug.addBugGroup("dorp"); bug.addBugGroup("ui"); bug.addBugGroup("monday"); filter.setTargetAttributeId(123L); filter.setTargetCapabilityId(456L); filter.setTargetComponentId(987L); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); filter.apply(bug); assertEquals(bug.getTargetAttributeId(), null); assertEquals(bug.getTargetCapabilityId(), null); assertEquals(bug.getTargetComponentId(), null); } }