/* vim: set ts=2 et sw=2 cindent fo=qroca: */ package com.globant.katari.search.domain; import org.junit.Test; import org.junit.Before; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.matchers.JUnitMatchers.*; import java.util.List; import com.globant.katari.tools.SecurityTestUtils; import com.globant.katari.search.SpringTestUtils; import com.globant.katari.search.domain.mock.User; import com.globant.katari.search.domain.mock.Activity; import com.globant.katari.hibernate.coreuser.domain.Role; public class IndexRepositoryTest { private IndexRepository repository; private TestRepository testRepository; @Before public void setUp() { repository = (IndexRepository) SpringTestUtils.getBeanFactory().getBean("search.indexRepository"); testRepository = (TestRepository) SpringTestUtils.getBeanFactory().getBean("repository"); // Removes users, roles and activities testRepository.removeAll(User.class); testRepository.removeAll(Activity.class); testRepository.removeAll(Role.class); SecurityTestUtils.fakeUser("admin", "ROLE_ADMINISTRATOR"); } /* There should be a way to test the reindex :). @Test public void testReindex() { repository.reIndex(); } */ @Test public void testFind_noResults() { SearchResult result = repository.find("name 1", 0); assertThat(result.getTotalPages(), is(0)); assertThat(result.getElements().size(), is(0)); } @Test public void testFind_emptyQuery() { SearchResult result = repository.find("", 0); assertThat(result.getTotalPages(), is(0)); assertThat(result.getElements().size(), is(0)); } @Test public void testFind_forAnonymousEmpty() { User user = new User("username", "email"); Activity activity = new Activity("activityname"); testRepository.save(user); testRepository.save(activity); SearchResult result; SecurityTestUtils.fakeUser("none", "IS_AUTHENTICATED_ANONYMOUSLY"); result = repository.find("username", 0); assertThat(result.getTotalPages(), is(0)); } @Test public void testFind_forAnonymousNotEmpty() { User user = new User("username", "email"); Activity activity = new Activity("activityname"); testRepository.save(user); testRepository.save(activity); SearchResult result; SecurityTestUtils.fakeUser("none", "IS_AUTHENTICATED_ANONYMOUSLY"); result = repository.find("activityname", 0); assertThat(result.getTotalPages(), is(1)); } @Test public void testFind_forAdministrator2results() { User user = new User("some name", "email"); Activity activity = new Activity("some name"); testRepository.save(user); testRepository.save(activity); SearchResult result; result = repository.find("some name", 0); assertThat(result.getElements().size(), is(2)); } @Test public void testFind_forAnonymous1result() { User user = new User("some name", "email"); Activity activity = new Activity("some name"); testRepository.save(user); testRepository.save(activity); SearchResult result; SecurityTestUtils.fakeUser("none", "IS_AUTHENTICATED_ANONYMOUSLY"); result = repository.find("some name", 0); assertThat(result.getTotalPages(), is(1)); } @Test public void testFind_withRole() { User user = new User("name", "email"); user.addRole(new Role("some role")); testRepository.save(user); SearchResult result = repository.find("name", 0); assertThat(result.getTotalPages(), is(1)); assertThat(result.getElements().size(), is(1)); assertThat(result.getElements().get(0).getDescription(), is("User - name: name; email: email; roles: some role")); } @Test public void testFind_byRole() { User user = new User("name", "email"); user.addRole(new Role("some role")); testRepository.save(user); SearchResult result = repository.find("some role", 0); assertThat(result.getTotalPages(), is(1)); assertThat(result.getElements().size(), is(1)); assertThat(result.getElements().get(0).getDescription(), is("User - name: name; email: email; roles: some role")); } @Test public void testFind() { // Add some test objects. User user1 = new User("name 1", "email 1"); User user2 = new User("name 2", "email 2"); testRepository.save(user1); testRepository.save(user2); SearchResult result = repository.find("name 1", 0); assertThat(result.getTotalPages(), is(1)); List<SearchResultElement> elements = result.getElements(); assertThat(elements.size(), is(1)); SearchResultElement element = elements.get(0); assertThat(element.getAlias(), is("User")); assertThat(element.getTitle(), is("name 1")); assertThat(element.getDescription(), is("User - name: name 1; email: email 1")); assertThat(element.getViewUrl(), containsString("user.do?id=")); List<Action> actions = element.getActions(); Action action = actions.get(0); assertThat(actions.size(), is(2)); // We only check the first one ... assertThat(action.getName(), is("Edit")); assertThat(action.getIcon(), is(nullValue())); assertThat(action.getUrl(), containsString("userEdit.do?id=")); } }