blob: b04087ac98cd0f23fa45254d635a1fab19d6294a [file] [log] [blame]
package com.atlassian.uwc.converters.mediawiki;
import java.io.File;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.atlassian.uwc.ui.Page;
public class ImageConverterTest extends TestCase {
ImageConverter tester = null;
Logger log = Logger.getLogger(this.getClass());
protected void setUp() throws Exception {
PropertyConfigurator.configure("log4j.properties");
tester = new ImageConverter();
}
public void testExistingImageConversion() {
String input = "[[Image:Wiki.png]]";
String expected = "!Wiki.png!";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "[[Image:Wiki.png|thumb]]";
expected = "!Wiki.png|thumbnail!";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testHandleImageProperty() {
//thumb
String input = "Wiki.png|thumb";
String expected = "Wiki.png|thumbnail";
String actual = tester.handleImageProperty(input);
assertEquals(expected, actual);
//none
input = "Wiki.png";
expected = "Wiki.png";
actual = tester.handleImageProperty(input);
assertEquals(expected, actual);
//align
input = "Wiki.png|right";
expected = "Wiki.png|align=right";
actual = tester.handleImageProperty(input);
assertEquals(expected, actual);
//thumb and align
input = "Wiki.png|center|thumb";
expected = "Wiki.png|thumbnail,align=center";
actual = tester.handleImageProperty(input);
assertEquals(expected, actual);
}
public void testImageConvertWithContext() {
String input =
"uwc-101: Mediawiki image conversion syntax needs to be case insensitive\n" +
"[[image:abcd.png|thumb]]\n" +"[[Image:abcd.png]]\n" +
"After\n";
String expected = "uwc-101: Mediawiki image conversion syntax needs to be case insensitive\n" +
"!abcd.png|thumbnail!\n" +
"!abcd.png!\n" +
"After\n";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
Page page = new Page(new File(""));
page.setOriginalText(input);
tester.convert(page);
actual = page.getConvertedText();
assertNotNull(actual);
assertEquals(expected, actual);
input = "Thumbnail image\n" +
"\n" +
"[[Image:Wiki.png|thumb]]\n" +
"\n" +
"After\n" +
"\n";
expected = "Thumbnail image\n" +
"\n" +
"!Wiki.png|thumbnail!\n" +
"\n" +
"After\n" +
"\n";
page.setOriginalText(input);
tester.convert(page);
actual = page.getConvertedText();
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testAlignmentPreservation() {
String input = "[[Image:Wiki.png|right]]";
String expected = "!Wiki.png|align=right!";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testAlignmentPreservationWithPropsMethod() {
String input = "Wiki.png|right";
String expected = "Wiki.png|align=right";
String actual = tester.handleImageProperty(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "Wiki.png|right|thumb";
expected = "Wiki.png|thumbnail,align=right";
actual = tester.handleImageProperty(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testDontFailOnColon() {
// This is a way to link to the description page. Something Confluence doesn't have.
String input = "[[:Image:Wiki.png]]";
String expected = "!Wiki.png!"; //FIXME Probably should be [^Wiki.png]
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testAltText() {
//We don't have anywhere to put alt text, so just lose it
String input = "[[Image:Wiki.png|jigsaw globe]]";
String expected = "!Wiki.png!";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testResize() {
String input = "[[Image:Wiki.png|30 px]]";
String expected = "!Wiki.png|width=30px!";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "[[Image:Wiki.png|130px]]";
expected = "!Wiki.png|width=130px!";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "[[Image:example.png|200x200px]]";
expected = "!example.png|width=200px,height=200px!";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "[[Image:example.jpg|frame|250px]]";
expected = "!example.jpg|align=right,width=250px!";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
input = "[[Image:example.jpg|150px|frame]]";
expected = "!example.jpg|align=right,width=150px!";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testFrame() {
//treat frame as align right for now
String input = "[[Image:Wiki.png|frame|Wikipedia Encyclopedia]]";
String expected = "!Wiki.png|align=right!";
String actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testCreateConfluenceImage() {
String img = "Wiki.png";
boolean thumbnail = false;
ImageConverter.Alignment align = ImageConverter.Alignment.LEFT;
String expected = "Wiki.png";
String actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
thumbnail = true;
expected = "Wiki.png|thumbnail";
actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
thumbnail = false;
align = ImageConverter.Alignment.CENTER;
expected = "Wiki.png|align=center";
actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
thumbnail = true;
expected = "Wiki.png|thumbnail,align=center";
actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
thumbnail=false;
align = ImageConverter.Alignment.RIGHT;
expected = "Wiki.png|align=right";
actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
thumbnail=true;
expected = "Wiki.png|thumbnail,align=right";
actual = tester.createConfluenceImage(img, thumbnail, align);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testHandleThumb() {
boolean thumb = true;
String expected = "|thumbnail";
String actual = tester.handleThumbnail(thumb);
assertNotNull(actual);
assertEquals(expected, actual);
thumb = false;
expected = "";
actual = tester.handleThumbnail(thumb);
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testHandleAlign() {
ImageConverter.Alignment align = ImageConverter.Alignment.LEFT;
String expected = "";
String actual = tester.handleAlignment(align, "|");
assertNotNull(actual);
assertEquals(expected, actual);
align = ImageConverter.Alignment.CENTER;
expected = "|align=center";
actual = tester.handleAlignment(align, "|");
assertNotNull(actual);
assertEquals(expected, actual);
align = ImageConverter.Alignment.RIGHT;
expected = "|align=right";
actual = tester.handleAlignment(align, "|");
assertNotNull(actual);
assertEquals(expected, actual);
}
public void testImagesInTables() {
String input, expected, actual;
input = "|| foo || bar ||\n" +
"| [[Image:abc-a2.png | 200px]] | abc (foo) |\n" +
"| [[Image:abc-a2.png | 200px]] | abc (foo) |\n" +
"| [[Image:abc-a2.png | 200px]] | abc (foo) |\n" +
"| [[Image:abc-a2.png | 200px]] | abc (foo) |\n" +
"";
expected = "|| foo || bar ||\n" +
"| !abc-a2.png|width=200px! | abc (foo) |\n" +
"| !abc-a2.png|width=200px! | abc (foo) |\n" +
"| !abc-a2.png|width=200px! | abc (foo) |\n" +
"| !abc-a2.png|width=200px! | abc (foo) |\n" +
"";
actual = tester.convertImages(input);
assertNotNull(actual);
assertEquals(expected, actual);
}
}