/** * Retrieves all associated tags for the specified tag type code. When tagCode is null, return all tags of the tag type code, which has no parent (i.e. root * tags). When tagCode is provided, return all tags of the tag type code and whose parent tag code is tagCode. * * @param tagTypeCode the tag type's code. * @param tagCode the parent tag code. * * @return all associated tags, with parent, itself and the children tags with has more children flag. */ @RequestMapping(value = TAGS_URI_PREFIX + "/tagTypes/{tagTypeCode}", method = RequestMethod.GET) @Secured(SecurityFunctions.FN_TAGS_ALL_GET) public TagListResponse getTags(@PathVariable("tagTypeCode") String tagTypeCode, @RequestParam(value = "tagCode", required = false) String tagCode) { return tagService.getTags(tagTypeCode, tagCode); }
/** * Retrieves all associated tags for the specified tag type code. When tagCode is null, return all tags of the tag type code, which has no parent (i.e. root * tags). When tagCode is provided, return all tags of the tag type code and whose parent tag code is tagCode. * * @param tagTypeCode the tag type's code. * @param tagCode the parent tag code. * * @return all associated tags, with parent, itself and the children tags with has more children flag. */ @RequestMapping(value = TAGS_URI_PREFIX + "/tagTypes/{tagTypeCode}", method = RequestMethod.GET) @Secured(SecurityFunctions.FN_TAGS_ALL_GET) public TagListResponse getTags(@PathVariable("tagTypeCode") String tagTypeCode, @RequestParam(value = "tagCode", required = false) String tagCode) { return tagService.getTags(tagTypeCode, tagCode); }
@Test public void testGetTagsMissingRequiredParameters() { // Try to get a tag when tag type is not specified. try { tagService.getTags(BLANK_TEXT, NO_PARENT_TAG_CODE); fail(); } catch (IllegalArgumentException e) { assertEquals("A tag type code must be specified.", e.getMessage()); } }
@Test public void testGetTagsTagTypeNoExists() { // Try to retrieve a list of tag keys for a non-existing tag type. try { tagService.getTags(TAG_TYPE, NO_PARENT_TAG_CODE); fail(); } catch (ObjectNotFoundException e) { assertEquals(String.format("Tag type with code \"%s\" doesn't exist.", TAG_TYPE), e.getMessage()); } }
@Test public void testGetTags() { List<TagChild> tagChildren = new ArrayList<>(); tagChildren.add(new TagChild(new TagKey(TAG_TYPE, TAG_CODE), false)); tagChildren.add(new TagChild(new TagKey(TAG_TYPE, TAG_CODE_2), false)); TagListResponse tagListResponse = new TagListResponse(); tagListResponse.setTagChildren(tagChildren); when(tagService.getTags(TAG_TYPE, TAG_CODE)).thenReturn(tagListResponse); // Retrieve the tag. TagListResponse resultTagKeys = tagRestController.getTags(TAG_TYPE, TAG_CODE); // Verify the external calls. verify(tagService).getTags(TAG_TYPE, TAG_CODE); verifyNoMoreInteractions(tagService); // Validate the returned object. assertEquals(tagListResponse, resultTagKeys); ; }
@Test public void testGetTagsTagsNoExist() { // Create and persist a tag type entity. tagTypeDaoTestHelper.createTagTypeEntity(TAG_TYPE, TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION); // Retrieve a list of tag keys, when none of the tags exist for the tag type. TagListResponse resultTagKeys = tagService.getTags(TAG_TYPE, NO_PARENT_TAG_CODE); // Validate the returned object. assertNotNull(resultTagKeys); assertEquals(0, resultTagKeys.getTagChildren().size()); }
@Test public void testGetTagsWithParent() { // Create and persist a tag entity. TagEntity root = tagDaoTestHelper.createTagEntity(TAG_TYPE, TAG_CODE, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION); TagEntity child = tagDaoTestHelper.createTagEntity(TAG_TYPE, TAG_CODE_2, TAG_DISPLAY_NAME + "x", TAG_SEARCH_SCORE_MULTIPLIER_2, TAG_DESCRIPTION_2 + "x", root); tagDaoTestHelper.createTagEntity(TAG_TYPE, TAG_CODE_2 + "y", TAG_DISPLAY_NAME_2 + "y", TAG_SEARCH_SCORE_MULTIPLIER_3, TAG_DESCRIPTION_2 + "y", child); //only the root TagListResponse resultTagKeys = tagService.getTags(TAG_TYPE, NO_PARENT_TAG_CODE); assertNull(resultTagKeys.getParentTagKey()); assertNull(resultTagKeys.getTagKey()); assertEquals(resultTagKeys.getTagChildren().size(), 1); resultTagKeys = tagService.getTags(TAG_TYPE, TAG_CODE); assertNull(resultTagKeys.getParentTagKey()); assertEquals(resultTagKeys.getTagChildren().size(), 1); assertEquals(resultTagKeys.getTagKey(), new TagKey(TAG_TYPE, TAG_CODE)); //the lower case should be the same resultTagKeys = tagService.getTags(TAG_TYPE, TAG_CODE.toLowerCase() + " "); assertNull(resultTagKeys.getParentTagKey()); assertEquals(resultTagKeys.getTagChildren().size(), 1); assertEquals(resultTagKeys.getTagKey(), new TagKey(TAG_TYPE, TAG_CODE)); resultTagKeys = tagService.getTags(TAG_TYPE, TAG_CODE_2.toLowerCase() + " "); assertNotNull(resultTagKeys.getParentTagKey()); assertEquals(resultTagKeys.getParentTagKey(), new TagKey(TAG_TYPE, TAG_CODE)); assertEquals(resultTagKeys.getTagChildren().size(), 1); assertEquals(resultTagKeys.getTagKey(), new TagKey(TAG_TYPE, TAG_CODE_2)); }
@Test public void testGetTagsUpperCaseParameters() { // Create and persist a tag type entity. TagTypeEntity tagTypeEntity = tagTypeDaoTestHelper.createTagTypeEntity(TAG_TYPE, TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION); // Create and persist two tag entities for the same tag type. tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION); tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE_2, TAG_TYPE_DISPLAY_NAME_2, TAG_SEARCH_SCORE_MULTIPLIER_2, TAG_DESCRIPTION); // Retrieve a list of tag keys using uppercase input parameters. TagListResponse resultTagKeys = tagService.getTags(TAG_TYPE.toUpperCase(), NO_PARENT_TAG_CODE); // Validate the returned object. assertNotNull(resultTagKeys); assertEquals(Arrays .asList(new TagChild(new TagKey(TAG_TYPE, TAG_CODE), TAG_HAS_NO_CHILDREN), new TagChild(new TagKey(TAG_TYPE, TAG_CODE_2), TAG_HAS_NO_CHILDREN)), resultTagKeys.getTagChildren()); }
@Test public void testGetTags() { // Create and persist a tag type entity. TagTypeEntity tagTypeEntity = tagTypeDaoTestHelper.createTagTypeEntity(TAG_TYPE, TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION); // Create and persist two tag entities for the same tag type. tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION); tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE_2, TAG_TYPE_DISPLAY_NAME_2, TAG_SEARCH_SCORE_MULTIPLIER_2, TAG_DESCRIPTION_2); // Retrieve a list of tag keys. TagListResponse resultTagKeys = tagService.getTags(TAG_TYPE, NO_PARENT_TAG_CODE); // Validate the returned object. assertNotNull(resultTagKeys); assertEquals(Arrays .asList(new TagChild(new TagKey(TAG_TYPE, TAG_CODE), TAG_HAS_NO_CHILDREN), new TagChild(new TagKey(TAG_TYPE, TAG_CODE_2), TAG_HAS_NO_CHILDREN)), resultTagKeys.getTagChildren()); }
@Test public void testGetTagsLowerCaseParameters() { // Create and persist a tag type entity. TagTypeEntity tagTypeEntity = tagTypeDaoTestHelper.createTagTypeEntity(TAG_TYPE, TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION); // Create and persist two tag entities for the same tag type. tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION); tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE_2, TAG_TYPE_DISPLAY_NAME_2, TAG_DESCRIPTION_2); // Retrieve a list of tag keys using lowercase input parameters. TagListResponse resultTagKeys = tagService.getTags(addWhitespace(TAG_TYPE), NO_PARENT_TAG_CODE); // Validate the returned object. assertNotNull(resultTagKeys); assertEquals(Arrays .asList(new TagChild(new TagKey(TAG_TYPE, TAG_CODE), TAG_HAS_NO_CHILDREN), new TagChild(new TagKey(TAG_TYPE, TAG_CODE_2), TAG_HAS_NO_CHILDREN)), resultTagKeys.getTagChildren()); }
@Test public void testGetTagsTrimParameters() { // Create and persist a tag type entity. TagTypeEntity tagTypeEntity = tagTypeDaoTestHelper.createTagTypeEntity(TAG_TYPE, TAG_TYPE_DISPLAY_NAME, TAG_TYPE_ORDER, TAG_TYPE_DESCRIPTION); // Create and persist two tag entities for the same tag type. tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE, TAG_DISPLAY_NAME, TAG_SEARCH_SCORE_MULTIPLIER, TAG_DESCRIPTION); tagDaoTestHelper.createTagEntity(tagTypeEntity, TAG_CODE_2, TAG_TYPE_DISPLAY_NAME_2, TAG_SEARCH_SCORE_MULTIPLIER_2, TAG_DESCRIPTION_2); // Retrieve a list of tag keys using input parameters with leading and trailing empty spaces. TagListResponse resultTagKeys = tagService.getTags(addWhitespace(TAG_TYPE), NO_PARENT_TAG_CODE); // Validate the returned object. assertNotNull(resultTagKeys); assertEquals(Arrays .asList(new TagChild(new TagKey(TAG_TYPE, TAG_CODE), TAG_HAS_NO_CHILDREN), new TagChild(new TagKey(TAG_TYPE, TAG_CODE_2), TAG_HAS_NO_CHILDREN)), resultTagKeys.getTagChildren()); }