package org.jooby.issues;
import java.util.Locale;
import java.util.Optional;
import org.jooby.test.ServerFeature;
import org.junit.Test;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValueFactory;
public class Issue273b extends ServerFeature {
{
use(ConfigFactory.empty()
.withValue("application.lang",
ConfigValueFactory.fromAnyRef("fr-CA,fr-FR,en,en-CA,en-GB,en-US,de")));
get("/locale/filter", req -> req.locales(Locale::filter));
get("/locale/lookup", req -> Optional.ofNullable(req.locale(Locale::lookup))
.map(Locale::toString).orElse(""));
}
@Test
public void filter() throws Exception {
request().get("/locale/filter")
.expect("[]");
request().get("/locale/lookup")
.expect("");
request().get("/locale/filter")
.header("Accept-Language", "fr")
.expect("[fr_CA, fr_FR, fr_FX]");
request().get("/locale/lookup")
.header("Accept-Language", "fr")
.expect("");
request().get("/locale/filter")
.header("Accept-Language", "en")
.expect("[en, en_CA, en_GB, en_US]");
request().get("/locale/lookup")
.header("Accept-Language", "en")
.expect("en");
request().get("/locale/filter")
.header("Accept-Language", "de")
.expect("[de]");
request().get("/locale/lookup")
.header("Accept-Language", "de")
.expect("de");
request().get("/locale/filter")
.header("Accept-Language", "es")
.expect("[]");
request().get("/locale/lookup")
.header("Accept-Language", "es")
.expect("");
request().get("/locale/filter")
.header("Accept-Language", "fr-*")
.expect("[fr_CA, fr_FR, fr_FX]");
request().get("/locale/lookup")
.header("Accept-Language", "fr-*")
.expect("fr_CA");
request().get("/locale/filter")
.header("Accept-Language", "*-CA")
.expect("[fr_CA, en_CA]");
request().get("/locale/lookup")
.header("Accept-Language", "*-CA")
.expect("fr_CA");
request().get("/locale/filter")
.header("Accept-Language", "*-DE")
.expect("[]");
request().get("/locale/lookup")
.header("Accept-Language", "*-DE")
.expect("en");
request().get("/locale/filter")
.header("Accept-Language", "*-IT")
.expect("[]");
request().get("/locale/lookup")
.header("Accept-Language", "*-IT")
.expect("en");
}
}