public static ImperativeFacetFlags getImperativeFacetFlags(final ObjectMember member, final Method method) { final ImperativeFacetFlags flags = new ImperativeFacetFlags(); if (member == null) { return flags; } final List<Facet> allFacets = member.getFacets(Filters.anyOfType(Facet.class)); for (final Facet facet : allFacets) { final ImperativeFacet imperativeFacet = ImperativeFacetUtils.getImperativeFacet(facet); if (imperativeFacet == null) { continue; } final List<Method> methods = imperativeFacet.getMethods(); if (!methods.contains(method)) { continue; } flags.apply(imperativeFacet); // no need to search further if (flags.bothSet()) { break; } } return flags; }
@SuppressWarnings("unchecked") @Test public void getImperativeFacetsWhenHasOneImperativeFacet() throws Exception { final ImperativeFacet imperativeFacet = null; context.checking(new Expectations() { { one(mockObjectMember).getFacets(with(any(Filter.class))); will(returnValue(Lists.newArrayList((Facet) imperativeFacet))); } }); final ImperativeFacetFlags flags = ImperativeFacetUtils.getImperativeFacetFlags(mockObjectMember, method); assertThat(flags, is(not(nullValue()))); // TODO: need more tests here, these don't go deep enough... }
@SuppressWarnings("unchecked") @Test public void getImperativeFacetsWhenHasNone() throws Exception { context.checking(new Expectations() { { one(mockObjectMember).getFacets(with(any(Filter.class))); will(returnValue(Lists.newArrayList())); } }); final ImperativeFacetFlags flags = ImperativeFacetUtils.getImperativeFacetFlags(mockObjectMember, method); assertThat(flags, is(not(nullValue()))); assertThat(flags.impliesResolve(), is(false)); assertThat(flags.impliesObjectChanged(), is(false)); }