package de.lessvoid.nifty.html; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.htmlparser.tags.BodyTag; import org.htmlparser.tags.ParagraphTag; import org.junit.After; import org.junit.Before; import org.junit.Test; import de.lessvoid.nifty.builder.PanelBuilder; public class NiftyVisitorTest { private NiftyVisitor visitor; private NiftyBuilderFactory builderFactoryMock; @Before public void before() { builderFactoryMock = createMock(NiftyBuilderFactory.class); visitor = new NiftyVisitor(null, builderFactoryMock, null, null); } @After public void after() { verify(builderFactoryMock); } @Test public void simpleBodyTagSuccess() throws Exception { PanelBuilder bodyPanelBuilder = new PanelBuilder(); expect(builderFactoryMock.createBodyPanelBuilder()).andReturn(bodyPanelBuilder); replay(builderFactoryMock); BodyTag bodyTag = new BodyTag(); visitor.visitTag(bodyTag); visitor.visitEndTag(bodyTag); assertEquals(bodyPanelBuilder, visitor.builder()); assertTrue(bodyPanelBuilder.getElementBuilders().isEmpty()); } @Test public void paragraphTagRequiresBody() throws Exception { replay(builderFactoryMock); ParagraphTag p = new ParagraphTag(); visitor.visitTag(p); visitor.visitEndTag(p); try { visitor.builder(); } catch (Exception e) { assertEquals("This looks like HTML with a missing <body> tag\n", e.getMessage()); } } }