package com.box.sdk; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.TimeZone; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; public class BoxSearchParametersTest { @Test(expected = BoxAPIException.class) @Category(UnitTest.class) public void searchWithoutQueryAndMetadataThrowsError() { BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.getQueryParameters(); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetQueryParam() { final String query = "A Query"; BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery(query); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=A+Query"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetFieldParam() { final List<String> fields = new ArrayList<String>(); fields.add("field1"); fields.add("field2"); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setFields(fields); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&fields=field1%2Cfield2"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetFileExtensionsParam() { final List<String> fields = new ArrayList<String>(); fields.add("pdf"); fields.add("doc"); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setFileExtensions(fields); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&file_extensions=pdf%2Cdoc"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetOwnerUserIdsParam() { final List<String> owners = new ArrayList<String>(); owners.add("123"); owners.add("456"); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setOwnerUserIds(owners); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&owner_user_ids=123%2C456"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetAncestorFolderIdsParam() { final List<String> folderIds = new ArrayList<String>(); folderIds.add("123"); folderIds.add("456"); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setAncestorFolderIds(folderIds); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&ancestor_folder_ids=123%2C456"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetContentTypesParam() { final List<String> contentTypes = new ArrayList<String>(); contentTypes.add("description"); contentTypes.add("file_content"); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setContentTypes(contentTypes); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&content_types=description%2Cfile_content"); } @Test @Category(UnitTest.class) public void shouldCorrectlyHandleSettingAndGettingEmptyContentTypesParam() { final List<String> contentTypes = new ArrayList<String>(); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setContentTypes(contentTypes); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetScopeParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setScope("enterprise"); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&scope=enterprise"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetTypeParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setType("file"); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&type=file"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetTrashContentParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setTrashContent("trashed_only"); searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals(queryParams.toString(), "?query=query&trash_content=trashed_only"); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetCreatedRangeParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String createdFromDateString = "2016-01-01T00:00:00+0000"; String createdToDateString = "2016-04-01T00:00:00+0000"; try { Date createdFromDate = sdf.parse(createdFromDateString); Date createdToDate = sdf.parse(createdToDateString); DateRange createdRange = new DateRange(createdFromDate, createdToDate); searchParams.setCreatedRange(createdRange); } catch (ParseException e) { /* no op */ } searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals( queryParams.toString(), "?query=query&created_at_range=2016-01-01T00%3A00%3A00%2B0000%2C2016-04-01T00%3A00%3A00%2B0000" ); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetUpdatedRangeParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); String updatedFromDateString = "2016-01-01T00:00:00+0000"; String updatedToDateString = "2016-04-01T00:00:00+0000"; try { Date updatedFromDate = sdf.parse(updatedFromDateString); Date updatedToDate = sdf.parse(updatedToDateString); DateRange updatedRange = new DateRange(updatedFromDate, updatedToDate); searchParams.setUpdatedRange(updatedRange); } catch (ParseException e) { /* no op */ } searchParams.setQuery("query"); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals( queryParams.toString(), "?query=query&updated_at_range=2016-01-01T00%3A00%3A00%2B0000%2C2016-04-01T00%3A00%3A00%2B0000" ); } @Test @Category(UnitTest.class) public void shouldCorrectlySetAndGetMetadataFilterParam() { BoxSearchParameters searchParams = new BoxSearchParameters(); BoxMetadataFilter metadataFilter = new BoxMetadataFilter(); metadataFilter.setScope("enterprise"); metadataFilter.setTemplateKey("test"); SizeRange sizeRange = new SizeRange(12, 19); metadataFilter.addNumberRangeFilter("testnumber", sizeRange); metadataFilter.addFilter("test", "example"); searchParams.setMetadataFilter(metadataFilter); QueryStringBuilder queryParams = searchParams.getQueryParameters(); Assert.assertEquals( queryParams.toString(), "?mdfilters=%5B%7B%22templateKey%22%3A%22test%22%2C%22scope%22%3A%22enterprise" + "%22%2C%22filters%22%3A%7B%22testnumber%22%3A%7B%22gt%22%3A12%2C%22lt" + "%22%3A19%7D%2C%22test%22%3A%22example%22%7D%7D%5D" ); } }