package org.openmrs.projectbuendia.webservices.rest;
// Copyright 2015 The Project Buendia Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at: http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distrib-
// uted under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
// OR CONDITIONS OF ANY KIND, either express or implied. See the License for
// specific language governing permissions and limitations under the License.
import org.junit.Test;
import org.openmrs.Concept;
import org.openmrs.ConceptName;
import org.openmrs.projectbuendia.ClientConceptNamer;
import java.util.Arrays;
import java.util.Locale;
import static org.junit.Assert.assertEquals;
/** Unit tests for ClientConceptNamer. */
public class ClientConceptNamerTest {
@Test
public void testConceptNameFailoverToDefault() {
Concept concept = new Concept();
ConceptName en = makePreferred("name en", ClientConceptNamer.DEFAULT);
concept.setNames(Arrays.asList(en));
String name = new ClientConceptNamer(new Locale("fr")).getClientName(concept);
assertEquals("name en", name);
}
private ConceptName makePreferred(String s, Locale l) {
ConceptName enClient = new ConceptName(s, l);
enClient.setLocalePreferred(true);
return enClient;
}
@Test
public void testConceptNameFailoverToDefaultClient() {
Concept concept = new Concept();
ConceptName en = makePreferred("name en", ClientConceptNamer.DEFAULT);
ConceptName enClient = makePreferred("name en client", ClientConceptNamer.DEFAULT_CLIENT);
concept.setNames(Arrays.asList(en, enClient));
String name = new ClientConceptNamer(new Locale("fr")).getClientName(concept);
assertEquals("name en client", name);
}
@Test
public void testConceptNameFailoverToClientInLocale() {
Concept concept = new Concept();
ConceptName en = makePreferred("name en", ClientConceptNamer.DEFAULT);
ConceptName enClient = makePreferred("name en client", ClientConceptNamer.DEFAULT_CLIENT);
ConceptName frClient = makePreferred("name fr client", new Locale.Builder()
.setLanguage("fr")
.setRegion(ClientConceptNamer.CLIENT_REGION)
.setVariant(ClientConceptNamer.VARIANT)
.build());
concept.setNames(Arrays.asList(en, enClient, frClient));
String name = new ClientConceptNamer(new Locale("fr")).getClientName(concept);
assertEquals("name fr client", name);
}
@Test
public void testConceptNameFailoverToLocaleClientWhenLocaleDefaultPresent() {
Concept concept = new Concept();
ConceptName en = makePreferred("name en", ClientConceptNamer.DEFAULT);
ConceptName enClient = makePreferred("name en client", ClientConceptNamer.DEFAULT_CLIENT);
ConceptName fr = makePreferred("name fr", new Locale("fr"));
ConceptName frClient = makePreferred("name fr client", new Locale.Builder()
.setLanguage("fr")
.setRegion(ClientConceptNamer.CLIENT_REGION)
.setVariant(ClientConceptNamer.VARIANT)
.build());
concept.setNames(Arrays.asList(en, enClient, fr, frClient));
String name = new ClientConceptNamer(new Locale("fr")).getClientName(concept);
assertEquals("name fr client", name);
}
@Test
public void testConceptNameFailoverToLocaleDefaultWhenNoLocaleDefault() {
Concept concept = new Concept();
ConceptName en = makePreferred("name en", ClientConceptNamer.DEFAULT);
ConceptName enClient = makePreferred("name en client", ClientConceptNamer.DEFAULT_CLIENT);
ConceptName fr = makePreferred("name fr", new Locale("fr"));
concept.setNames(Arrays.asList(en, enClient, fr));
String name = new ClientConceptNamer(new Locale("fr")).getClientName(concept);
assertEquals("name fr", name);
}
}