1- import { binarySearch , isUrl } from '../index' ;
1+ import { UIKitMessageTypes , binarySearch , getUIKitMessageType , isAdminMessage , isFileMessage , isUrl , isUserMessage } from '../index' ;
22
33describe ( 'Global-utils' , ( ) => {
44 it ( 'should find right index with binarySearch' , ( ) => {
@@ -18,6 +18,95 @@ describe('Global-utils', () => {
1818 } ) ;
1919} ) ;
2020
21+ describe ( 'Global-utils: verify message type util functions' , ( ) => {
22+ it ( 'should return true for each message' , ( ) => {
23+ const mockUserMessage = {
24+ messageId : 0 ,
25+ isUserMessage : ( ) => true ,
26+ isFileMessage : ( ) => false ,
27+ isAdminMessage : ( ) => false ,
28+ messageType : 'user' ,
29+ } ;
30+ expect ( isUserMessage ( mockUserMessage ) ) . toBe ( true ) ;
31+ expect ( isFileMessage ( mockUserMessage ) ) . toBe ( false ) ;
32+ expect ( isAdminMessage ( mockUserMessage ) ) . toBe ( false ) ;
33+ const mockFileMessage = {
34+ messageId : 1 ,
35+ isUserMessage : ( ) => false ,
36+ isFileMessage : ( ) => true ,
37+ isAdminMessage : ( ) => false ,
38+ messageType : 'file' ,
39+ } ;
40+ expect ( isUserMessage ( mockFileMessage ) ) . toBe ( false ) ;
41+ expect ( isFileMessage ( mockFileMessage ) ) . toBe ( true ) ;
42+ expect ( isAdminMessage ( mockFileMessage ) ) . toBe ( false ) ;
43+ const mockAdminMessage = {
44+ messageId : 2 ,
45+ isUserMessage : ( ) => false ,
46+ isFileMessage : ( ) => false ,
47+ isAdminMessage : ( ) => true ,
48+ messageType : 'admin' ,
49+ } ;
50+ expect ( isUserMessage ( mockAdminMessage ) ) . toBe ( false ) ;
51+ expect ( isFileMessage ( mockAdminMessage ) ) . toBe ( false ) ;
52+ expect ( isAdminMessage ( mockAdminMessage ) ) . toBe ( true ) ;
53+ } ) ;
54+
55+ it ( 'should return true with incomplete properties' , ( ) => {
56+ expect ( isUserMessage ( { isUserMessage : ( ) => true } ) ) . toBe ( true ) ;
57+ expect ( isUserMessage ( { messageType : 'user' } ) ) . toBe ( true ) ;
58+ expect ( isFileMessage ( { isFileMessage : ( ) => true } ) ) . toBe ( true ) ;
59+ expect ( isFileMessage ( { messageType : 'file' } ) ) . toBe ( true ) ;
60+ expect ( isAdminMessage ( { isAdminMessage : ( ) => true } ) ) . toBe ( true ) ;
61+ expect ( isAdminMessage ( { messageType : 'admin' } ) ) . toBe ( true ) ;
62+ } ) ;
63+
64+ it ( 'should refer to the method first rather than messageType' , ( ) => {
65+ const mockUserMessage = {
66+ messageId : 0 ,
67+ isUserMessage : ( ) => true ,
68+ isFileMessage : ( ) => false ,
69+ isAdminMessage : ( ) => false ,
70+ messageType : 'file' ,
71+ } ;
72+ expect ( isUserMessage ( mockUserMessage ) ) . toBe ( true ) ;
73+ expect ( isFileMessage ( mockUserMessage ) ) . toBe ( false ) ;
74+ expect ( isAdminMessage ( mockUserMessage ) ) . toBe ( false ) ;
75+ expect ( isUserMessage ( { isUserMessage : ( ) => false , messageType : 'user' } ) ) . toBe ( false ) ;
76+ const mockFileMessage = {
77+ messageId : 1 ,
78+ isUserMessage : ( ) => false ,
79+ isFileMessage : ( ) => true ,
80+ isAdminMessage : ( ) => false ,
81+ messageType : 'admin' ,
82+ } ;
83+ expect ( isUserMessage ( mockFileMessage ) ) . toBe ( false ) ;
84+ expect ( isFileMessage ( mockFileMessage ) ) . toBe ( true ) ;
85+ expect ( isAdminMessage ( mockFileMessage ) ) . toBe ( false ) ;
86+ expect ( isFileMessage ( { isFileMessage : ( ) => false , messsageType : 'file' } ) ) . toBe ( false ) ;
87+ const mockAdminMessage = {
88+ messageId : 2 ,
89+ isUserMessage : ( ) => false ,
90+ isFileMessage : ( ) => false ,
91+ isAdminMessage : ( ) => true ,
92+ messageType : 'user' ,
93+ } ;
94+ expect ( isUserMessage ( mockAdminMessage ) ) . toBe ( false ) ;
95+ expect ( isFileMessage ( mockAdminMessage ) ) . toBe ( false ) ;
96+ expect ( isAdminMessage ( mockAdminMessage ) ) . toBe ( true ) ;
97+ expect ( isAdminMessage ( { isAdminMessage : ( ) => false , messageType : 'admin' } ) ) . toBe ( false ) ;
98+ } ) ;
99+
100+ it ( 'should verify edge case of MultipleFilesMessage' , ( ) => {
101+ expect (
102+ getUIKitMessageType ( {
103+ isFileMessage : ( ) => false ,
104+ messageType : 'file' ,
105+ } )
106+ ) . toBe ( UIKitMessageTypes . UNKNOWN ) ;
107+ } )
108+ } ) ;
109+
21110describe ( 'isURL' , ( ) => {
22111 it ( 'should return true for valid URLs' , ( ) => {
23112 const validURLs = [
0 commit comments