package org.webpieces.webserver.tags;
import org.junit.Before;
import org.junit.Test;
import org.webpieces.httpcommon.Requests;
import org.webpieces.httpcommon.api.RequestId;
import org.webpieces.httpcommon.api.RequestListener;
import org.webpieces.httpparser.api.dto.HttpRequest;
import org.webpieces.httpparser.api.dto.KnownHttpMethod;
import org.webpieces.httpparser.api.dto.KnownStatusCode;
import org.webpieces.util.file.VirtualFileClasspath;
import org.webpieces.webserver.ResponseExtract;
import org.webpieces.webserver.WebserverForTest;
import org.webpieces.webserver.api.TagOverridesModule;
import org.webpieces.webserver.test.FullResponse;
import org.webpieces.webserver.test.MockResponseSender;
import org.webpieces.webserver.test.PlatformOverridesForTest;
import com.google.inject.Module;
import com.google.inject.util.Modules;
public class TestIncludeTypeTags {
private MockResponseSender socket = new MockResponseSender();
private RequestListener server;
@Before
public void setUp() {
Module allOverrides = Modules.combine(new PlatformOverridesForTest(), new TagOverridesModule(TagOverrideLookupForTesting.class));
VirtualFileClasspath metaFile = new VirtualFileClasspath("tagsMeta.txt", WebserverForTest.class.getClassLoader());
WebserverForTest webserver = new WebserverForTest(allOverrides, null, false, metaFile);
server = webserver.start();
}
@Test
public void testCustomTag() {
HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/customtag");
server.incomingRequest(req, new RequestId(0), true, socket);
FullResponse response = ResponseExtract.assertSingleResponse(socket);
response.assertStatusCode(KnownStatusCode.HTTP_200_OK);
response.assertContains("Page Using Custom Tag");
response.assertContains("This is a custom tag which can also use tags in itself <a href=`/verbatim`>Some Link Here</a>".replace('`', '"'));
response.assertContains("The user is override and Dean Hiller tag argument cool"); //using variable in custom tag
response.assertContains("After Custom Tag");
response.assertContains("supertemplate BEGIN");
response.assertContains("supertemplate END");
}
@Test
public void testRenderTagArgsTag() {
HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/renderTagArgs");
server.incomingRequest(req, new RequestId(0), true, socket);
FullResponse response = ResponseExtract.assertSingleResponse(socket);
response.assertStatusCode(KnownStatusCode.HTTP_200_OK);
response.assertContains("Page Using renderTagArgs Tag");
response.assertContains("The user is override"); //using variable from tag args in the called template
response.assertContains("After renderTagArgs Tag");
}
@Test
public void testRenderPageArgsTag() {
HttpRequest req = Requests.createRequest(KnownHttpMethod.GET, "/renderPageArgs");
server.incomingRequest(req, new RequestId(0), true, socket);
FullResponse response = ResponseExtract.assertSingleResponse(socket);
response.assertStatusCode(KnownStatusCode.HTTP_200_OK);
response.assertContains("Page Using renderPageArgs Tag");
response.assertContains("The user is Dean Hiller"); //using variable from page args in the called template
response.assertContains("After renderPageArgs Tag");
}
}