package org.jbehave.core.model;
import org.jbehave.core.embedder.MetaFilter;
import org.junit.Test;
import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
public class MetaBehaviour {
@Test
public void shouldInheritFromParentStartingFromEmpty() {
// Given
Meta parent = new Meta(asList("one One"));
// When
Meta child = new Meta();
assertThat(child.isEmpty(), is(true));
assertThat(child.getProperty("one"), equalTo(Meta.BLANK));
Meta meta = child.inheritFrom(parent);
// Then
assertThat(meta.isEmpty(), is(false));
assertThat(meta.getProperty("one"), equalTo("One"));
}
@Test
public void shouldInheritFromParentStartingFromNonEmpty() {
// Given
Meta parent = new Meta(asList("one One"));
// When
Meta child = new Meta(asList("two Two"));
assertThat(child.isEmpty(), is(false));
assertThat(child.getProperty("two"), equalTo("Two"));
Meta meta = child.inheritFrom(parent);
// Then
assertThat(meta.isEmpty(), is(false));
assertThat(meta.getProperty("one"), equalTo("One"));
assertThat(meta.getProperty("two"), equalTo("Two"));
}
@Test
public void shouldAllowFilteringBySingleExclusion() {
Meta meta = new Meta(asList("environment all", "skip"));
MetaFilter filter = new MetaFilter("-skip");
assertThat("should not be allowed", filter.allow(meta), is(false));
}
@Test
public void shouldAllowFilteringByMultipleExclusions() {
Meta meta = new Meta(asList("environment all", "skip"));
MetaFilter filter = new MetaFilter("-environment preview -skip");
assertThat("should not be allowed", filter.allow(meta), is(false));
}
}