/*
* Copyright (c) 2011-2012 Lockheed Martin Corporation
*
* 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
* distributed 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 the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.action.execution.notification.notifier;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import org.apache.velocity.context.Context;
import org.eurekastreams.server.domain.stream.ActivityDTO;
import org.eurekastreams.server.domain.stream.StreamEntityDTO;
import org.jmock.Expectations;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Before;
import org.junit.Test;
/**
* Tests NotificationMessageBuilderHelper.
*/
public class NotificationMessageBuilderHelperTest
{
/** Test data. */
private static final String BASE_URL = "http://demo.eurekastreams.org";
/** Used for mocking objects. */
private final JUnit4Mockery context = new JUnit4Mockery()
{
{
setImposteriser(ClassImposteriser.INSTANCE);
}
};
/** Fixture: Velocity context. */
private final Context velocityContext = context.mock(Context.class, "velocityContext");
/** SUT. */
private NotificationMessageBuilderHelper sut;
/**
* Setup before each test.
*/
@Before
public void setUp()
{
sut = new NotificationMessageBuilderHelper(BASE_URL);
}
/**
* Tests resolveActivityBody.
*/
@Test
public void testResolveActivityBody()
{
final ActivityDTO activity = context.mock(ActivityDTO.class, "activity");
final StreamEntityDTO actor = context.mock(StreamEntityDTO.class, "actor");
final HashMap<String, String> baseObjectProps = new HashMap<String, String>();
context.checking(new Expectations()
{
{
allowing(activity).getBaseObjectProperties();
will(returnValue(baseObjectProps));
allowing(activity).getActor();
will(returnValue(actor));
allowing(actor).getDisplayName();
will(returnValue("John Doe"));
}
});
activity.getBaseObjectProperties().put("content", "Blah %EUREKA:ACTORNAME% blah %EUREKA:NOSUCH% blah.");
String result = sut.resolveActivityBody(activity, velocityContext);
context.assertIsSatisfied();
assertEquals("Blah John Doe blah %EUREKA:NOSUCH% blah.", result);
}
/**
* Test.
*/
@Test
public void testCleanWhitespace()
{
assertEquals(" \t Blah blah \n blah \n blah blah.",
sut.cleanWhitespace(" \t \r\n \t Blah blah \n blah \n blah blah. \n \n "));
}
/**
* Tests resolveActivityBody.
*/
@Test
public void testCleanWhitespaceAllBlank()
{
assertEquals("", sut.cleanWhitespace(" \t \r\n \r \n "));
}
/**
* Tests resolveActivityBody.
*/
@Test
public void testCleanWhitespaceEmpty()
{
assertEquals("", sut.cleanWhitespace(""));
}
/**
* Tests resolveMarkdownForText.
*/
@Test
public void testResolveMarkdownForText()
{
String result = sut.resolveMarkdownForText("Pre-stuff [Link1](#dest1) Middle [Link2](http://xyz/abc) After");
assertEquals("Pre-stuff Link1 (" + BASE_URL + "#dest1) Middle Link2 (http://xyz/abc) After", result);
}
/**
* Tests resolveMarkdownForText.
*/
@Test
public void testResolveMarkdownForTextOnlyLinks()
{
String result = sut.resolveMarkdownForText("[Link1](#dest1)[Link2](http://xyz/abc)");
assertEquals("Link1 (" + BASE_URL + "#dest1)Link2 (http://xyz/abc)", result);
}
/**
* Tests resolveMarkdownForText.
*/
@Test
public void testResolveMarkdownForTextNoLinks()
{
String input = "A [Link1] (http://xyz/abc) B";
String result = sut.resolveMarkdownForText(input);
assertEquals(input, result);
}
/**
* Tests resolveMarkdownForHtml.
*/
@Test
public void testResolveMarkdownForHtml()
{
String input = "Bef&ore [Link&1](#dest1?a=b&c=d) Mid&dle [Link&2](http://xyz/abc?x=y&z=w) Aft&er";
String result = sut.resolveMarkdownForHtml(input);
assertEquals("Bef&ore <a href=\"" + BASE_URL + "#dest1?a=b&c=d\">Link&1</a> Mid&dle "
+ "<a href=\"http://xyz/abc?x=y&z=w\">Link&2</a> Aft&er", result);
}
/**
* Tests resolveMarkdownForHtml.
*/
@Test
public void testResolveMarkdownForHtmlOnlyLinks()
{
String result = sut.resolveMarkdownForHtml("[Link&1](#dest1?a=b&c=d)[Link&2](http://xyz/abc?x=y&z=w)");
assertEquals("<a href=\"" + BASE_URL + "#dest1?a=b&c=d\">Link&1</a>"
+ "<a href=\"http://xyz/abc?x=y&z=w\">Link&2</a>", result);
}
/**
* Tests resolveMarkdownForHtml.
*/
@Test
public void testResolveMarkdownForHtmlNoLinks()
{
String result = sut.resolveMarkdownForHtml("A&A [Link&1] (http://xyz/abc?a=1&b=2) B&B");
assertEquals("A&A [Link&1] (http://xyz/abc?a=1&b=2) B&B", result);
}
}