//package pl.matisoft.soy.ajax.url;
//
//import com.google.common.base.Optional;
//import org.junit.Assert;
//import org.junit.Before;
//import org.junit.Test;
//import org.mockito.InjectMocks;
//import org.mockito.MockitoAnnotations;
//import pl.matisoft.soy.ajax.hash.HashFileGenerator;
//import pl.matisoft.soy.template.TemplateFilesResolver;
//
//import java.net.URL;
//
//import static org.mockito.Matchers.anyCollection;
//import static org.mockito.Mockito.mock;
//import static org.mockito.Mockito.when;
//
///**
// * Created with IntelliJ IDEA.
// * User: mati
// * Date: 21/10/2013
// * Time: 20:12
// */
//public class DefaultTemplateUrlComposerTest {
//
// @InjectMocks
// private DefaultTemplateUrlComposer defaultTemplateUrlComposer = new DefaultTemplateUrlComposer();
//
// @Before
// public void setUp() throws Exception {
// MockitoAnnotations.initMocks(this);
// }
//
// @Test
// public void defaultSiteUrl() throws Exception {
// Assert.assertNotNull("should not be null", defaultTemplateUrlComposer.getSiteUrl());
// }
//
// @Test
// public void defaultNotNull() throws Exception {
// Assert.assertNotNull("should not be null", defaultTemplateUrlComposer.getSiteUrl());
// }
//
// @Test
// public void composeReturnsNotNull() throws Exception {
// Assert.assertNotNull("should not return null", defaultTemplateUrlComposer.compose("templates/template1.soy"));
// }
//
// @Test
// public void composeReturnsAbsentByDefault() throws Exception {
// Assert.assertFalse("should return absent to", defaultTemplateUrlComposer.compose("templates/template1.soy").isPresent());
// }
//
// @Test
// public void composeShouldCompose() throws Exception {
// final String url = "templates/template1.soy";
// final HashFileGenerator hashFileGenerator = mock(HashFileGenerator.class);
// final TemplateFilesResolver templateFilesResolver = mock(TemplateFilesResolver.class);
// final URL urlURL = new URL("file://");
// defaultTemplateUrlComposer.setHashFileGenerator(hashFileGenerator);
// defaultTemplateUrlComposer.setTemplateFilesResolver(templateFilesResolver);
//
// when(templateFilesResolver.resolve(url)).thenReturn(Optional.of(urlURL));
// when(hashFileGenerator.hash(Optional.<URL>of(urlURL))).thenReturn(Optional.of("md5"));
// when(hashFileGenerator.hashMulti(anyCollection())).thenReturn(Optional.of("md5"));
//
// Assert.assertTrue("should return value", defaultTemplateUrlComposer.compose(url).isPresent());
// Assert.assertEquals("should equal to value", "/soy/compileJs?hash=md5&file=templates/template1.soy", defaultTemplateUrlComposer.compose(url).get());
// }
//
// @Test
// public void composeShouldComposeWithSiteUrl() throws Exception {
// final String url = "templates/template1.soy";
// final HashFileGenerator hashFileGenerator = mock(HashFileGenerator.class);
// final TemplateFilesResolver templateFilesResolver = mock(TemplateFilesResolver.class);
// final URL urlURL = new URL("file://");
// defaultTemplateUrlComposer.setHashFileGenerator(hashFileGenerator);
// defaultTemplateUrlComposer.setTemplateFilesResolver(templateFilesResolver);
// defaultTemplateUrlComposer.setSiteUrl("http://www.somesiteurl.com");
//
// when(templateFilesResolver.resolve(url)).thenReturn(Optional.of(urlURL));
// when(hashFileGenerator.hash(Optional.<URL>of(urlURL))).thenReturn(Optional.of("md5"));
// when(hashFileGenerator.hashMulti(anyCollection())).thenReturn(Optional.of("md5"));
//
// Assert.assertTrue("should return value", defaultTemplateUrlComposer.compose(url).isPresent());
// Assert.assertEquals("should equal to value", "http://www.somesiteurl.com/soy/compileJs?hash=md5&file=templates/template1.soy", defaultTemplateUrlComposer.compose(url).get());
// }
//
//}