package io.sphere.sdk.facets;
import io.sphere.sdk.search.TermFacetResult;
import io.sphere.sdk.search.TermStats;
import org.junit.Test;
import java.util.List;
import static java.util.Arrays.asList;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.assertj.core.api.Assertions.assertThat;
public class FacetOptionTest {
private static final TermStats TERM_ONE = TermStats.of("one", 30);
private static final TermStats TERM_TWO = TermStats.of("two", 20);
private static final TermStats TERM_THREE = TermStats.of("three", 10);
@Test
public void createsInstance() throws Exception {
final FacetOption option = FacetOption.of("foo", 5, true);
assertThat(option.getValue()).isEqualTo("foo");
assertThat(option.getCount()).isEqualTo(5);
assertThat(option.isSelected()).isTrue();
}
@Test
public void createsInstanceFromTermStats() throws Exception {
final FacetOption option = FacetOption.ofTermStats(TERM_TWO, asList(TERM_ONE.getTerm(), TERM_TWO.getTerm()));
assertThat(option.getValue()).isEqualTo(TERM_TWO.getTerm());
assertThat(option.getCount()).isEqualTo(TERM_TWO.getCount());
assertThat(option.isSelected()).isTrue();
}
@Test
public void createsInstanceFromTermStatsWithUnselectedValue() throws Exception {
final FacetOption option = FacetOption.ofTermStats(TERM_THREE, asList(TERM_ONE.getTerm(), TERM_TWO.getTerm()));
assertThat(option.getValue()).isEqualTo(TERM_THREE.getTerm());
assertThat(option.getCount()).isEqualTo(TERM_THREE.getCount());
assertThat(option.isSelected()).isFalse();
}
@Test
public void createsInstanceWithDifferentValue() throws Exception {
final FacetOption option = FacetOption.ofTermStats(TERM_ONE, emptyList());
assertThat(option.getValue()).isNotEqualTo("foo");
assertThat(option.withValue("foo").getValue()).isEqualTo("foo");
}
@Test
public void createsInstanceWithDifferentCount() throws Exception {
final FacetOption option = FacetOption.ofTermStats(TERM_ONE, emptyList());
assertThat(option.getCount()).isNotEqualTo(100);
assertThat(option.withCount(100).getCount()).isEqualTo(100);
}
@Test
public void createsInstanceWithDifferentSelected() throws Exception {
final FacetOption option = FacetOption.ofTermStats(TERM_ONE, emptyList());
assertThat(option.isSelected()).isFalse();
assertThat(option.withSelected(true).isSelected()).isTrue();
}
@Test
public void createsInstanceWithDifferentChildren() throws Exception {
final List<FacetOption> childrenOptions = asList(
FacetOption.of("foo", 2, true),
FacetOption.of("bar", 6, false).withChildren(singletonList(FacetOption.of("bar2", 4, true))));
final FacetOption option = FacetOption.ofTermStats(TERM_ONE, emptyList());
assertThat(option.getChildren()).isEmpty();
assertThat(option.withChildren(childrenOptions).getChildren()).containsExactlyElementsOf(childrenOptions);
}
}