package br.com.caelum.guj.uri.compatible; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import net.jforum.entities.Topic; import org.junit.Test; import br.com.caelum.guj.repositories.TopicRepository; import br.com.caelum.guj.uri.BookmarkableURIBuilder; public class CompatibleToBookmarkablePostConverterTest { @Test public void shouldIdentifyCompatibleURIs() { CompatibleToBookmarkablePostConverter converter = new CompatibleToBookmarkablePostConverter( "/guj.com.br/posts/list/1.java", this.aRepository(), aBuilder()); assertTrue(converter.isConvertable()); converter = new CompatibleToBookmarkablePostConverter( "/recentTopics/list.java", this.aRepository(), aBuilder()); assertFalse(converter.isConvertable()); } @Test public void shouldIdentifyPaginatedURIs() { TopicRepository repository = this.aRepository(); when(repository.getById(20)).thenReturn(aTopicCalled("eric created jforum")); BookmarkableURIBuilder builder = aBuilder(); when(builder.bookmarkableURL(20, "eric created jforum", 4)).thenReturn("/java/20-erich-created-jforum/4"); CompatibleToBookmarkablePostConverter converter = new CompatibleToBookmarkablePostConverter( "/posts/list/45/20.java", repository, builder); assertEquals("/java/20-erich-created-jforum/4", converter.convert()); } @Test public void shouldGenerateTheBookmarkableUrl() { TopicRepository repository = this.aRepository(); when(repository.getById(20)).thenReturn(aTopicCalled("eric created jforum")); BookmarkableURIBuilder builder = aBuilder(); when(builder.bookmarkableURL(20, "eric created jforum")).thenReturn("/java/20-erich-created-jforum"); CompatibleToBookmarkablePostConverter converter = new CompatibleToBookmarkablePostConverter( "/posts/list/20.java", repository, builder); String bookmarkableURI = converter.convert(); assertEquals("/java/20-erich-created-jforum", bookmarkableURI); } private TopicRepository aRepository() { return mock(TopicRepository.class); } private BookmarkableURIBuilder aBuilder() { return mock(BookmarkableURIBuilder.class); } private Topic aTopicCalled(String title) { Topic topic = new Topic(); topic.setTitle(title); return topic; } }