package com.github.jknack.handlebars.springmvc;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.util.Locale;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.springframework.context.MessageSource;
import com.github.jknack.handlebars.Context;
import com.github.jknack.handlebars.Handlebars;
import com.github.jknack.handlebars.Options;
import com.github.jknack.handlebars.TagType;
import com.github.jknack.handlebars.Template;
@RunWith(PowerMockRunner.class)
@PrepareForTest({Options.class, MessageSourceHelper.class, Context.class })
public class MessageSourceHelperTest {
@Test(expected = NullPointerException.class)
public void nullMessageSource() {
new MessageSourceHelper(null);
}
@Test
public void messageSource() throws IOException {
String message = "Hola";
String code = "sayHi";
String defaultMessage = null;
// Options
Object[] params = {};
@SuppressWarnings("unchecked")
Map<String, Object> hash = createMock(Map.class);
expect(hash.get("default")).andReturn(defaultMessage);
Handlebars hbs = createMock(Handlebars.class);
Context ctx = createMock(Context.class);
Template fn = createMock(Template.class);
Options options = new Options.Builder(hbs, "messageSource", TagType.VAR, ctx, fn)
.setParams(params)
.setHash(hash)
.build();
MessageSource messageSource = createMock(MessageSource.class);
expect(messageSource.getMessage(eq(code), eq(params), eq(defaultMessage),
isA(Locale.class))).andReturn(message);
replay(messageSource, hash);
Object result =
new MessageSourceHelper(messageSource).apply(code, options);
assertEquals(message, result);
verify(messageSource, hash);
}
@Test
public void messageSourceWithParams() throws IOException {
String message = "Hola";
String code = "sayHi";
String defaultMessage = null;
// Options
Object[] params = {1, 2, 3 };
@SuppressWarnings("unchecked")
Map<String, Object> hash = createMock(Map.class);
expect(hash.get("default")).andReturn(defaultMessage);
Handlebars hbs = createMock(Handlebars.class);
Context ctx = createMock(Context.class);
Template fn = createMock(Template.class);
Options options = new Options.Builder(hbs, "messageSource", TagType.VAR, ctx, fn)
.setParams(params)
.setHash(hash)
.build();
MessageSource messageSource = createMock(MessageSource.class);
expect(messageSource.getMessage(eq(code), eq(params), eq(defaultMessage),
isA(Locale.class))).andReturn(message);
replay(messageSource, hash);
Object result =
new MessageSourceHelper(messageSource).apply(code, options);
assertEquals(message, result);
verify(messageSource, hash);
}
@Test
public void messageSourceWithDefaulMessage() throws IOException {
String message = "Hola";
String code = "sayHi";
String defaultMessage = "Aca viene el 3";
// Options
Object[] params = {1, 2, 3 };
@SuppressWarnings("unchecked")
Map<String, Object> hash = createMock(Map.class);
expect(hash.get("default")).andReturn(defaultMessage);
Handlebars hbs = createMock(Handlebars.class);
Context ctx = createMock(Context.class);
Template fn = createMock(Template.class);
Options options = new Options.Builder(hbs, "messageSource", TagType.VAR, ctx, fn)
.setParams(params)
.setHash(hash)
.build();
MessageSource messageSource = createMock(MessageSource.class);
expect(messageSource.getMessage(eq(code), eq(params), eq(defaultMessage),
isA(Locale.class))).andReturn(message);
replay(messageSource, hash);
Object result =
new MessageSourceHelper(messageSource).apply(code, options);
assertEquals(message, result);
verify(messageSource, hash);
}
}