/** * Retrieves all tag types existing in the system. For each tag type entity, the endpoint returns tag type key by default along with any other top-level * elements as specified by the "fields" query string parameter. The list of tag types returned by the endpoint is sorted alphabetically by tag type's order * value ascending. * * @param request the tag type search request. The request does not take any search keys or filters * @param fields the field options for the tag type search response. The valid field options are: displayName, tagTypeOrder and description * * @return the tag type search response */ @RequestMapping(value = TAG_TYPES_URI_PREFIX + "/search", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}) @Secured(SecurityFunctions.FN_TAG_TYPES_SEARCH_POST) public TagTypeSearchResponse searchTagTypes(@RequestBody TagTypeSearchRequest request, @RequestParam(value = "fields", required = false, defaultValue = "") Set<String> fields) { return tagTypeService.searchTagTypes(request, fields); }
/** * Retrieves all tag types existing in the system. For each tag type entity, the endpoint returns tag type key by default along with any other top-level * elements as specified by the "fields" query string parameter. The list of tag types returned by the endpoint is sorted alphabetically by tag type's order * value ascending. * * @param request the tag type search request. The request does not take any search keys or filters * @param fields the field options for the tag type search response. The valid field options are: displayName, tagTypeOrder and description * * @return the tag type search response */ @RequestMapping(value = TAG_TYPES_URI_PREFIX + "/search", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}) @Secured(SecurityFunctions.FN_TAG_TYPES_SEARCH_POST) public TagTypeSearchResponse searchTagTypes(@RequestBody TagTypeSearchRequest request, @RequestParam(value = "fields", required = false, defaultValue = "") Set<String> fields) { return tagTypeService.searchTagTypes(request, fields); }
@Test public void testSearchTagTypesMissingRequiredParameters() { // Try to search tag types when tag type search request is not specified. try { tagTypeService.searchTagTypes(null, Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD, TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD, TagTypeServiceImpl.DESCRIPTION_FIELD)); fail(); } catch (IllegalArgumentException e) { assertEquals("A tag type search request must be specified.", e.getMessage()); } }
@Test public void testSearchTagTypesInvalidParameters() { // Try to search tag types using a un-supported search response field option. try { tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet("INVALID_FIELD_OPTION")); fail(); } catch (IllegalArgumentException e) { assertEquals("Search response field \"invalid_field_option\" is not supported.", e.getMessage()); } }
@Test public void testSearchTagTypes() { TagTypeSearchResponse tagTypeSearchResponse = new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, TAG_TYPE_DESCRIPTION))); Set<String> searchFields = Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD, TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD, TagTypeServiceImpl.DESCRIPTION_FIELD); when(tagTypeService.searchTagTypes(new TagTypeSearchRequest(), searchFields)).thenReturn(tagTypeSearchResponse); // Search tag types. TagTypeSearchResponse resultTagTypeSearchResponse = tagTypeRestController.searchTagTypes(new TagTypeSearchRequest(), searchFields); // Verify the external calls. verify(tagTypeService).searchTagTypes(new TagTypeSearchRequest(), searchFields); verifyNoMoreInteractions(tagTypeService); // Validate the returned object. assertEquals(tagTypeSearchResponse, resultTagTypeSearchResponse); }
@Test public void testSearchTagTypesLowerCaseParameters() { // Create and persist database entities required for testing. createDatabaseEntitiesForTagTypeSearchTesting(); // Search tag types using lower case input parameters. TagTypeSearchResponse tagTypeSearchResponse = tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD.toLowerCase(), TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD.toLowerCase(), TagTypeServiceImpl.DESCRIPTION_FIELD.toLowerCase())); // Validate the returned object. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, TAG_TYPE_DESCRIPTION))), tagTypeSearchResponse); }
@Test public void testSearchTagTypesUpperCaseParameters() { // Create and persist database entities required for testing. createDatabaseEntitiesForTagTypeSearchTesting(); // Search tag types using upper case input parameters. TagTypeSearchResponse tagTypeSearchResponse = tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD.toUpperCase(), TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD.toUpperCase(), TagTypeServiceImpl.DESCRIPTION_FIELD.toUpperCase())); // Validate the returned object. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, TAG_TYPE_DESCRIPTION))), tagTypeSearchResponse); }
@Test public void testSearchTagTypes() { // Create and persist database entities required for testing. createDatabaseEntitiesForTagTypeSearchTesting(); // Search tag types. TagTypeSearchResponse tagTypeSearchResponse = tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD, TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD, TagTypeServiceImpl.DESCRIPTION_FIELD)); // Validate the returned object. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, TAG_TYPE_DESCRIPTION))), tagTypeSearchResponse); }
@Test public void testSearchTagTypesTrimParameters() { // Create and persist database entities required for testing. createDatabaseEntitiesForTagTypeSearchTesting(); // Search tag types by using input parameters with leading and trailing empty spaces. TagTypeSearchResponse tagTypeSearchResponse = tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(addWhitespace(TagTypeServiceImpl.DISPLAY_NAME_FIELD), addWhitespace(TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD), addWhitespace(TagTypeServiceImpl.DESCRIPTION_FIELD))); // Validate the returned object. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, TAG_TYPE_DESCRIPTION))), tagTypeSearchResponse); }
@Test public void testSearchTagTypesMissingOptionalParameters() { // Create and persist database entities required for testing. createDatabaseEntitiesForTagTypeSearchTesting(); // Search tag types without specifying optional parameters. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), NO_TAG_TYPE_DISPLAY_NAME, NO_TAG_TYPE_ORDER, NO_TAG_TYPE_DESCRIPTION), new TagType(new TagTypeKey(TAG_TYPE), NO_TAG_TYPE_DISPLAY_NAME, NO_TAG_TYPE_ORDER, NO_TAG_TYPE_DESCRIPTION))), tagTypeService.searchTagTypes(new TagTypeSearchRequest(), NO_SEARCH_RESPONSE_FIELDS)); // Search tag types without specifying optional parameters except for the display name field option. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), TAG_TYPE_DISPLAY_NAME_2, NO_TAG_TYPE_ORDER, NO_TAG_TYPE_DESCRIPTION), new TagType(new TagTypeKey(TAG_TYPE), TAG_TYPE_DISPLAY_NAME, NO_TAG_TYPE_ORDER, NO_TAG_TYPE_DESCRIPTION))), tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.DISPLAY_NAME_FIELD))); // Search tag types without specifying optional parameters except for the tag type order field option. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), NO_TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, NO_TAG_TYPE_DESCRIPTION), new TagType(new TagTypeKey(TAG_TYPE), NO_TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER_2, NO_TAG_TYPE_DESCRIPTION))), tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.TAG_TYPE_ORDER_FIELD))); // Search tag types without specifying optional parameters except for the description field option. assertEquals(new TagTypeSearchResponse(Arrays .asList(new TagType(new TagTypeKey(TAG_TYPE_2), NO_TAG_TYPE_DISPLAY_NAME, NO_TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION_2), new TagType(new TagTypeKey(TAG_TYPE), NO_TAG_TYPE_DISPLAY_NAME, NO_TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION))), tagTypeService.searchTagTypes(new TagTypeSearchRequest(), Sets.newHashSet(TagTypeServiceImpl.DESCRIPTION_FIELD))); }