package com.constellio.model.services.search.query.logical; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.DataStoreField; import com.constellio.model.services.search.StatusFilter; import com.constellio.sdk.tests.ConstellioTest; public class LogicalSearchQueryTest extends ConstellioTest { @Mock User user; LogicalSearchQuery query; List<String> userTokens = Arrays.asList("rtokenA", "rtokenB", "wtokenC", "wtokenD", "dtokenE", "dtokenF"); @Mock DataStoreField metadata; @Before public void setUp() throws Exception { query = new LogicalSearchQuery(); when(user.getCollection()).thenReturn("ZeCollection"); } // @Test // public void givenFilterByUserReadWith2TokensThenOK() // throws Exception { // query.filteredWithUser(user); // assertThat(query.filterUser).isEqualTo("tokens_ss:A38 OR tokens_ss:rtokenA OR tokens_ss:rtokenB OR tokens_ss:__public__"); // } // // @Test // public void givenFilterByUserReadWith2TokensAndReadAccessThenOK() // throws Exception { // when(user.hasCollectionReadAccess()).thenReturn(true); // query.filteredWithUser(user); // // assertThat(query.filterUser).isEqualTo( // "tokens_ss:A38 OR collection_s:ZeCollection OR tokens_ss:rtokenA OR tokens_ss:rtokenB OR tokens_ss:__public__"); // } // // @Test // public void givenFilterByUserReadWith2TokensAndWriteAccessThenOK() // throws Exception { // when(user.hasCollectionWriteAccess()).thenReturn(true); // query.filteredWithUser(user); // // assertThat(query.filterUser) // .isEqualTo( // "tokens_ss:A38 OR collection_s:ZeCollection OR tokens_ss:rtokenA OR tokens_ss:rtokenB OR tokens_ss:__public__"); // } // // @Test // public void givenFilterByUserReadWith2TokensAndDeleteAccessThenOK() // throws Exception { // when(user.getUserTokens()).thenReturn(Arrays.asList("rtokenA", "rtokenB", "wtokenC", "dtokenD")); // when(user.hasCollectionDeleteAccess()).thenReturn(true); // query.filteredWithUser(user); // // assertThat(query.filterUser) // .isEqualTo( // "tokens_ss:A38 OR collection_s:ZeCollection OR tokens_ss:rtokenA OR tokens_ss:rtokenB OR tokens_ss:__public__"); // } // // @Test // public void givenFilterByUserWriteWith2TokensAndReadAccessThenOK() // throws Exception { // when(user.hasCollectionReadAccess()).thenReturn(true); // query.filteredWithUserWrite(user); // // assertThat(query.filterUser).isEqualTo("tokens_ss:A38 OR tokens_ss:wtokenC OR tokens_ss:wtokenD"); // } // // @Test // public void givenFilterByUserWriteWith2TokensAndWriteAccessThenOK() // throws Exception { // when(user.hasCollectionWriteAccess()).thenReturn(true); // query.filteredWithUserWrite(user); // // assertThat(query.filterUser) // .isEqualTo("tokens_ss:A38 OR collection_s:ZeCollection OR tokens_ss:wtokenC OR tokens_ss:wtokenD"); // } // // @Test // public void givenFilterByUserWriteWith2TokensAndDeleteAccessThenOK() // throws Exception { // when(user.hasCollectionDeleteAccess()).thenReturn(true); // query.filteredWithUserWrite(user); // // assertThat(query.filterUser).isEqualTo("tokens_ss:A38 OR tokens_ss:wtokenC OR tokens_ss:wtokenD"); // } // // @Test // public void givenFilterByUserDeleteWith2TokensAndReadAccessThenOK() // throws Exception { // when(user.hasCollectionReadAccess()).thenReturn(true); // query.filteredWithUserDelete(user); // // assertThat(query.filterUser).isEqualTo("tokens_ss:A38 OR tokens_ss:dtokenE OR tokens_ss:dtokenF"); // } // // @Test // public void givenFilterByUserDeleteWith2TokensAndWriteAccessThenOK() // throws Exception { // when(user.hasCollectionWriteAccess()).thenReturn(true); // query.filteredWithUserDelete(user); // // assertThat(query.filterUser).isEqualTo("tokens_ss:A38 OR tokens_ss:dtokenE OR tokens_ss:dtokenF"); // } // // @Test // public void givenFilterByUserDeleteWith2TokensAndDeleteAccessThenOK() // throws Exception { // when(user.hasCollectionDeleteAccess()).thenReturn(true); // query.filteredWithUserDelete(user); // // assertThat(query.filterUser) // .isEqualTo("tokens_ss:A38 OR collection_s:ZeCollection OR tokens_ss:dtokenE OR tokens_ss:dtokenF"); // } @Test public void givenFilterByStatusDeletedThenFiltersContainsDeleted() throws Exception { query.filteredByStatus(StatusFilter.DELETED); assertThat(query.filterStatus).isEqualTo("deleted_s:__TRUE__"); } @Test public void givenFilterByStatusActiveThenFiltersContainsActive() throws Exception { query.filteredByStatus(StatusFilter.ACTIVES); assertThat(query.filterStatus).isEqualTo("(*:* -deleted_s:__TRUE__)"); } @Test public void givenFilterByStatusAllThenNoFilterAdded() throws Exception { query.filteredByStatus(StatusFilter.ALL); assertThat(query.filterStatus).isNull(); } @Test public void whenAddStatsOnFieldThenFilterAdded() throws Exception { query.computeStatsOnField(metadata); assertThat(query.getStatisticFields()).contains(metadata.getDataStoreCode()); } }