mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-30 18:17:53 +00:00 
			
		
		
		
	* fix user & teams mentions issue * add test cases * code refactor
This commit is contained in:
		
							parent
							
								
									ba32ef1817
								
							
						
					
					
						commit
						6bb01614c9
					
				| @ -0,0 +1,145 @@ | ||||
| /* | ||||
|  *  Copyright 2024 Collate. | ||||
|  *  Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  *  you may not use this file except in compliance with the License. | ||||
|  *  You may obtain a copy of the License at | ||||
|  *  http://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  *  Unless required by applicable law or agreed to in writing, software | ||||
|  *  distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  *  See the License for the specific language governing permissions and | ||||
|  *  limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| import { | ||||
|   getEntityField, | ||||
|   getEntityFQN, | ||||
|   getEntityType, | ||||
|   suggestions, | ||||
| } from './FeedUtils'; | ||||
| 
 | ||||
| jest.mock('../rest/miscAPI', () => ({ | ||||
|   getSearchedUsers: jest.fn().mockResolvedValue({ | ||||
|     data: { | ||||
|       hits: { | ||||
|         hits: [ | ||||
|           { | ||||
|             _source: { | ||||
|               entityType: 'User', | ||||
|               name: 'John Doe', | ||||
|               deleted: false, | ||||
|             }, | ||||
|             _id: '1', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   }), | ||||
|   getUserSuggestions: jest.fn().mockResolvedValue({ | ||||
|     data: { | ||||
|       suggest: { | ||||
|         'metadata-suggest': [ | ||||
|           { | ||||
|             options: [ | ||||
|               { | ||||
|                 _source: { | ||||
|                   entityType: 'User', | ||||
|                   name: 'John Doe', | ||||
|                   deleted: false, | ||||
|                 }, | ||||
|                 _id: '1', | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   }), | ||||
|   searchData: jest.fn().mockResolvedValue({ | ||||
|     data: { | ||||
|       hits: { | ||||
|         hits: [ | ||||
|           { | ||||
|             _source: { | ||||
|               entityType: 'Table', | ||||
|               name: 'Table1', | ||||
|               displayName: 'Table 1', | ||||
|               fullyQualifiedName: 'db.schema.Table1', | ||||
|             }, | ||||
|             _id: '1', | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   }), | ||||
|   getSuggestions: jest.fn().mockResolvedValue({ | ||||
|     data: { | ||||
|       suggest: { | ||||
|         'metadata-suggest': [ | ||||
|           { | ||||
|             options: [ | ||||
|               { | ||||
|                 _source: { | ||||
|                   entityType: 'Table', | ||||
|                   name: 'Table1', | ||||
|                   displayName: 'Table 1', | ||||
|                   fullyQualifiedName: 'db.schema.Table1', | ||||
|                 }, | ||||
|                 _id: '1', | ||||
|               }, | ||||
|             ], | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|     }, | ||||
|   }), | ||||
| })); | ||||
| 
 | ||||
| jest.mock('./StringsUtils', () => ({ | ||||
|   getEncodedFqn: jest.fn().mockImplementation((fqn) => fqn), | ||||
| })); | ||||
| 
 | ||||
| jest.mock('./TableUtils', () => ({ | ||||
|   getEntityLink: jest.fn(), | ||||
| })); | ||||
| 
 | ||||
| jest.mock('./FeedUtils', () => ({ | ||||
|   ...jest.requireActual('./FeedUtils'), | ||||
|   getEntityField: jest.fn().mockReturnValue('entityField'), | ||||
|   getEntityFQN: jest.fn().mockReturnValue('123'), | ||||
|   getEntityType: jest.fn().mockReturnValue('entityType'), | ||||
|   getEntityPlaceHolder: jest.fn().mockReturnValue('entityPlaceHolder'), | ||||
|   buildMentionLink: jest.fn().mockReturnValue('buildMentionLink'), | ||||
|   getEntityBreadcrumbs: jest.fn().mockReturnValue('entityBreadcrumbs'), | ||||
| })); | ||||
| 
 | ||||
| describe('Feed Utils', () => { | ||||
|   it('should getEntityType return the correct entity type', () => { | ||||
|     expect(getEntityType('#E::Type::123')).toBe('entityType'); | ||||
|   }); | ||||
| 
 | ||||
|   it('should getEntityFQN return the correct entity FQN', () => { | ||||
|     expect(getEntityFQN('#E::Type::123')).toBe('123'); | ||||
|   }); | ||||
| 
 | ||||
|   it('should getEntityField return the correct entity field', () => { | ||||
|     expect(getEntityField('entityField')).toBe('entityField'); | ||||
|   }); | ||||
| 
 | ||||
|   it('should return mention suggestions for "@" mentionChar', async () => { | ||||
|     const searchTerm = ''; | ||||
|     const mentionChar = '@'; | ||||
| 
 | ||||
|     const result = await suggestions(searchTerm, mentionChar); | ||||
| 
 | ||||
|     expect(result).toEqual([ | ||||
|       { | ||||
|         id: '1', | ||||
|         value: '@John Doe', | ||||
|         link: 'http://localhost/undefined/John Doe', | ||||
|         type: 'team', | ||||
|         name: 'John Doe', | ||||
|       }, | ||||
|     ]); | ||||
|   }); | ||||
| }); | ||||
| @ -226,7 +226,7 @@ export async function suggestions( | ||||
|             value: name, | ||||
|             link: buildMentionLink( | ||||
|               ENTITY_URL_MAP[entityType as EntityUrlMapType], | ||||
|               hit._source.name | ||||
|               getEncodedFqn(hit._source.fullyQualifiedName ?? '') | ||||
|             ), | ||||
|             type: | ||||
|               hit._index === SearchIndex.USER ? UserTeam.User : UserTeam.Team, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Harsh Vador
						Harsh Vador