@@ -833,6 +833,30 @@ describe('messagesStore', () => {
833
833
let addGuestNameAction
834
834
let cancelFunctionMock
835
835
836
+ const oldMessagesList = [ {
837
+ id : 98 ,
838
+ token : TOKEN ,
839
+ actorType : ATTENDEE . ACTOR_TYPE . USERS ,
840
+ } , {
841
+ id : 99 ,
842
+ token : TOKEN ,
843
+ actorType : ATTENDEE . ACTOR_TYPE . GUESTS ,
844
+ } ]
845
+ const originalMessagesList = [ {
846
+ id : 100 ,
847
+ token : TOKEN ,
848
+ actorType : ATTENDEE . ACTOR_TYPE . USERS ,
849
+ } ]
850
+ const newMessagesList = [ {
851
+ id : 101 ,
852
+ token : TOKEN ,
853
+ actorType : ATTENDEE . ACTOR_TYPE . USERS ,
854
+ } , {
855
+ id : 102 ,
856
+ token : TOKEN ,
857
+ actorType : ATTENDEE . ACTOR_TYPE . GUESTS ,
858
+ } ]
859
+
836
860
beforeEach ( ( ) => {
837
861
testStoreConfig = cloneDeep ( messagesStore )
838
862
const guestNameStore = useGuestNameStore ( )
@@ -851,79 +875,44 @@ describe('messagesStore', () => {
851
875
} )
852
876
853
877
store = new Vuex . Store ( testStoreConfig )
854
- } )
855
-
856
- test ( 'fetches messages from server including last known' , async ( ) => {
857
- const messages = [ {
858
- id : 1 ,
859
- token : TOKEN ,
860
- actorType : ATTENDEE . ACTOR_TYPE . USERS ,
861
- } , {
862
- id : 2 ,
863
- token : TOKEN ,
864
- actorType : ATTENDEE . ACTOR_TYPE . GUESTS ,
865
- } ]
866
- const response = generateOCSResponse ( {
867
- headers : {
868
- 'x-chat-last-common-read' : '123' ,
869
- 'x-chat-last-given' : '100' ,
870
- } ,
871
- payload : messages ,
872
- } )
873
- fetchMessages . mockResolvedValueOnce ( response )
874
-
875
- await store . dispatch ( 'fetchMessages' , {
876
- token : TOKEN ,
877
- lastKnownMessageId : 100 ,
878
- includeLastKnown : true ,
879
- requestOptions : {
880
- dummyOption : true ,
881
- } ,
882
- minimumVisible : 0 ,
883
- } )
884
-
885
- expect ( fetchMessages ) . toHaveBeenCalledWith ( {
886
- token : TOKEN ,
887
- lastKnownMessageId : 100 ,
888
- includeLastKnown : true ,
889
- limit : CHAT . FETCH_LIMIT ,
890
- } , {
891
- dummyOption : true ,
892
- } )
893
-
894
- expect ( updateLastCommonReadMessageAction )
895
- . toHaveBeenCalledWith ( expect . anything ( ) , { token : TOKEN , lastCommonReadMessage : 123 } )
896
-
897
- expect ( addGuestNameAction ) . toHaveBeenCalledWith ( messages [ 1 ] , { noUpdate : true } )
898
878
899
- expect ( store . getters . messagesList ( TOKEN ) ) . toStrictEqual ( messages )
900
- expect ( store . getters . getFirstKnownMessageId ( TOKEN ) ) . toBe ( 100 )
901
- expect ( store . getters . getLastKnownMessageId ( TOKEN ) ) . toBe ( 2 )
879
+ for ( const index in originalMessagesList ) {
880
+ store . commit ( 'addMessage' , { token : TOKEN , message : originalMessagesList [ index ] } )
881
+ if ( index === '0' ) {
882
+ store . dispatch ( 'setFirstKnownMessageId' , { token : TOKEN , id : originalMessagesList [ index ] . id } )
883
+ }
884
+ if ( index === `${ originalMessagesList . length - 1 } ` ) {
885
+ store . dispatch ( 'setLastKnownMessageId' , { token : TOKEN , id : originalMessagesList [ index ] . id } )
886
+ }
887
+ }
902
888
} )
903
889
904
- test ( 'fetches messages from server excluding last known' , async ( ) => {
905
- const messages = [ {
906
- id : 1 ,
907
- token : TOKEN ,
908
- actorType : ATTENDEE . ACTOR_TYPE . USERS ,
909
- } , {
910
- id : 2 ,
911
- token : TOKEN ,
912
- actorType : ATTENDEE . ACTOR_TYPE . GUESTS ,
913
- } ]
890
+ const testCasesOld = [
891
+ [ true , CHAT . FETCH_OLD , [ ...oldMessagesList , originalMessagesList . at ( 0 ) ] . reverse ( ) , 98 , 100 ] ,
892
+ [ false , CHAT . FETCH_OLD , [ ...oldMessagesList ] . reverse ( ) , 98 , 100 ] ,
893
+ [ true , CHAT . FETCH_NEW , [ originalMessagesList . at ( - 1 ) , ...newMessagesList ] , 100 , 102 ] ,
894
+ [ false , CHAT . FETCH_NEW , newMessagesList , 100 , 102 ] ,
895
+ ]
896
+ test . each ( testCasesOld ) ( 'fetches messages from server: including last known - %s, look into future - %s' , async ( includeLastKnown , lookIntoFuture , payload , firstKnown , lastKnown ) => {
897
+
914
898
const response = generateOCSResponse ( {
915
899
headers : {
916
900
'x-chat-last-common-read' : '123' ,
917
- 'x-chat-last-given' : '100' ,
901
+ 'x-chat-last-given' : payload . at ( - 1 ) . id . toString ( ) ,
918
902
} ,
919
- payload : messages ,
903
+ payload,
920
904
} )
921
905
fetchMessages . mockResolvedValueOnce ( response )
906
+ const expectedMessages = lookIntoFuture
907
+ ? [ originalMessagesList [ 0 ] , ...newMessagesList ]
908
+ : [ ...oldMessagesList , originalMessagesList [ 0 ] ]
909
+ const expectedMessageFromGuest = expectedMessages . find ( message => message . actorType === ATTENDEE . ACTOR_TYPE . GUESTS )
922
910
923
911
await store . dispatch ( 'fetchMessages' , {
924
912
token : TOKEN ,
925
913
lastKnownMessageId : 100 ,
926
- includeLastKnown : false ,
914
+ includeLastKnown,
915
+ lookIntoFuture,
927
916
requestOptions : {
928
917
dummyOption : true ,
929
918
} ,
@@ -933,7 +922,8 @@ describe('messagesStore', () => {
933
922
expect ( fetchMessages ) . toHaveBeenCalledWith ( {
934
923
token : TOKEN ,
935
924
lastKnownMessageId : 100 ,
936
- includeLastKnown : false ,
925
+ includeLastKnown,
926
+ lookIntoFuture,
937
927
limit : CHAT . FETCH_LIMIT ,
938
928
} , {
939
929
dummyOption : true ,
@@ -942,11 +932,11 @@ describe('messagesStore', () => {
942
932
expect ( updateLastCommonReadMessageAction )
943
933
. toHaveBeenCalledWith ( expect . anything ( ) , { token : TOKEN , lastCommonReadMessage : 123 } )
944
934
945
- expect ( addGuestNameAction ) . toHaveBeenCalledWith ( messages [ 1 ] , { noUpdate : true } )
935
+ expect ( addGuestNameAction ) . toHaveBeenCalledWith ( expectedMessageFromGuest , { noUpdate : true } )
946
936
947
- expect ( store . getters . messagesList ( TOKEN ) ) . toStrictEqual ( messages )
948
- expect ( store . getters . getFirstKnownMessageId ( TOKEN ) ) . toBe ( 100 )
949
- expect ( store . getters . getLastKnownMessageId ( TOKEN ) ) . toBe ( null )
937
+ expect ( store . getters . messagesList ( TOKEN ) ) . toStrictEqual ( expectedMessages )
938
+ expect ( store . getters . getFirstKnownMessageId ( TOKEN ) ) . toBe ( firstKnown )
939
+ expect ( store . getters . getLastKnownMessageId ( TOKEN ) ) . toBe ( lastKnown )
950
940
} )
951
941
952
942
test ( 'cancels fetching messages' , ( ) => {
@@ -1111,6 +1101,7 @@ describe('messagesStore', () => {
1111
1101
token : TOKEN ,
1112
1102
lastKnownMessageId : 3 ,
1113
1103
includeLastKnown : false ,
1104
+ lookIntoFuture : CHAT . FETCH_OLD ,
1114
1105
limit : CHAT . FETCH_LIMIT ,
1115
1106
} , undefined )
1116
1107
0 commit comments