package com.vtence.molecule.lib; import com.vtence.molecule.http.Cookie; import org.hamcrest.FeatureMatcher; import org.hamcrest.Matcher; import org.junit.Test; import java.util.Arrays; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.is; public class CookieJarTest { CookieJar jar = new CookieJar(Arrays.asList( new Cookie("mr christie", "peanuts"), new Cookie("petit ecolier", "chocolat noir"))); @Test public void initiallyContainsOriginalCookies() { assertThat("empty jar?", jar.empty(), is(false)); assertThat("total cookies in jar", jar.size(), is(2)); } @Test @SuppressWarnings("unchecked") public void addsNewCookiesInOrder() { jar.add("delicious", "chocolat au lait"); assertThat("cookies in jar", jar.all(), contains( cookieNamed("mr christie"), cookieNamed("petit ecolier"), cookieNamed("delicious"))); } @Test public void knowsWhatCookiesItHolds() { assertThat("holds original cookie", jar.has("petit ecolier"), is(true)); assertThat("holds eaten cookie", jar.has("eaten cookie"), is(false)); } @Test public void dropsDiscardedCookies() { jar.discard("petit ecolier"); assertThat("holds rotten cookie", jar.has("petit ecolier"), is(false)); } private Matcher<Cookie> cookieNamed(String name) { return new FeatureMatcher<Cookie, String>(equalTo(name), "cookie named", "cookie") { protected String featureValueOf(Cookie cookie) { return cookie.name(); } }; } }