Package yalp.i18n

Source Code of yalp.i18n.LangTest

package yalp.i18n;

import static org.fest.assertions.Assertions.assertThat;

import java.util.Arrays;
import java.util.Locale;

import org.junit.Test;

import yalp.Yalp;
import yalp.YalpBuilder;
import yalp.mvc.Http;
import yalp.test.FunctionalTest;

public class LangTest {

    @Test
    public void testChange() {
        new YalpBuilder().build();
        Yalp.langs = Arrays.asList("no", "en", "fr");
        Lang.current.set(null);
        assertThat(Lang.current.get()).isNull();

        Lang.change("no");
        assertThat(Lang.current.get()).isEqualTo("no");
        Lang.change("nox");
        assertThat(Lang.current.get()).isEqualTo("no");
        Lang.change("EN");
        assertThat(Lang.current.get()).isEqualTo("en");
        Lang.change("fr");
        assertThat(Lang.current.get()).isEqualTo("fr");

        Lang.change("xx");
        assertThat(Lang.current.get()).isEqualTo("fr");

        Lang.change("en_uk");
        assertThat(Lang.current.get()).isEqualTo("en");

        Yalp.langs = Arrays.asList("no", "en", "en_uk", "fr");
        Lang.current.set(null);
        Lang.change("en_uk");
        assertThat(Lang.current.get()).isEqualTo("en_uk");
        Lang.change("en");
        assertThat(Lang.current.get()).isEqualTo("en");
        Lang.change("en_qw");
        assertThat(Lang.current.get()).isEqualTo("en");
    }

    @Test
    public void testGet() {
        new YalpBuilder().build();
        Yalp.langs = Arrays.asList("no", "en", "en_GB", "fr");
        Lang.current.set(null);

        Http.Response.current.set(new Http.Response());

        // check default when missing request
        Http.Request.current.set(null);
        assertThat(Lang.get()).isEqualTo("no");

        // check default when missing info in request
        Http.Request req = FunctionalTest.newRequest();
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("no"));

        // check only with accept-language,  without cookie value
        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "x"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("no"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "no"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("no"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "en"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "x,en"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "en-GB"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en", "GB"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "x,en-GB"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en", "GB"));

        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "x,en-US"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));


        // prove lighthouse fix https://play.lighthouseapp.com/projects/57987/tickets/1302
        // space in accept language header
        req = FunctionalTest.newRequest();
        req.headers.put("accept-language", new Http.Header("accept-language", "nl, en;q=0.8"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));
        // check with cookie value

        req = FunctionalTest.newRequest();

        Http.Cookie cookie = new Http.Cookie();
        cookie.name = "YALP_LANG";
        cookie.value = "x";//not found in cookie
        req.cookies.put(cookie.name, cookie);
        req.headers.put("accept-language", new Http.Header("accept-language", "en"));
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));

        cookie = new Http.Cookie();
        cookie.name = "YALP_LANG";
        cookie.value = "en";
        req.cookies.put(cookie.name, cookie);
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));

        cookie = new Http.Cookie();
        cookie.name = "YALP_LANG";
        cookie.value = "en_q";
        req.cookies.put(cookie.name, cookie);
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en"));

        cookie = new Http.Cookie();
        cookie.name = "YALP_LANG";
        cookie.value = "en_GB";
        req.cookies.put(cookie.name, cookie);
        Http.Request.current.set(req);
        Lang.current.set(null);
        assertLocale(new Locale("en", "GB"));


    }

    private void assertLocale(Locale locale) {
        assertThat(Lang.get()).isEqualTo(locale.toString());
        assertThat(Lang.getLocale()).isEqualTo(locale);
    }
}
TOP

Related Classes of yalp.i18n.LangTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.