package org.richfaces.bootstrap.less;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.ResponseWriter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class LessResponseWriterTest {
@Mock
ResponseWriter wrapped;
@Mock
UIComponent component;
@Test
public void when_writing_non_link_element_then_write_through() throws IOException {
// having
LessResponseWriter writer = new LessResponseWriter(wrapped);
// then
writer.startElement("body", component);
writer.writeAttribute("style", "xyz", "style");
// verify
InOrder inOrder = Mockito.inOrder(wrapped);
inOrder.verify(wrapped).startElement("body", component);
inOrder.verify(wrapped).writeAttribute("style", "xyz", "style");
inOrder.verifyNoMoreInteractions();
}
@Test
public void when_writing_link_attribute_then_the_attributes_are_not_written_immediately() throws IOException {
// having
LessResponseWriter writer = new LessResponseWriter(wrapped);
// then
writer.startElement("link", component);
writer.writeAttribute("rel", "stylesheet", "rel");
writer.writeAttribute("type", "text/css", "type");
// verify
InOrder inOrder = Mockito.inOrder(wrapped);
inOrder.verify(wrapped).startElement("link", component);
inOrder.verifyNoMoreInteractions();
}
@Test
public void when_writing_link_attribute_then_the_attributes_are_written_on_the_end_of_element() throws IOException {
// having
LessResponseWriter writer = new LessResponseWriter(wrapped);
// then
writer.startElement("link", component);
writer.writeAttribute("rel", "stylesheet", "rel");
writer.writeAttribute("type", "text/css", "type");
writer.endElement("link");
// verify
InOrder inOrder = Mockito.inOrder(wrapped);
inOrder.verify(wrapped).startElement("link", component);
inOrder.verify(wrapped).writeAttribute("rel", "stylesheet", "rel");
inOrder.verify(wrapped).writeAttribute("type", "text/css", "type");
inOrder.verify(wrapped).endElement("link");
inOrder.verifyNoMoreInteractions();
}
@Test
public void when_writing_link_attribute_and_its_href_points_to_less_resource_then_write_less_stylesheet_rel() throws IOException {
// having
LessResponseWriter writer = new LessResponseWriter(wrapped);
// then
writer.startElement("link", component);
writer.writeAttribute("type", "text/css", "type");
writer.writeAttribute("rel", "stylesheet", "rel");
writer.writeURIAttribute("href", "styles.less.jsf", "href");
writer.endElement("link");
// verify
InOrder inOrder = Mockito.inOrder(wrapped);
inOrder.verify(wrapped).startElement("link", component);
inOrder.verify(wrapped).writeAttribute("type", "text/css", "type");
inOrder.verify(wrapped).writeAttribute("rel", "stylesheet/less", "rel");
inOrder.verify(wrapped).writeURIAttribute("href", "styles.less.jsf", "href");
inOrder.verify(wrapped).endElement("link");
inOrder.verifyNoMoreInteractions();
}
}