@@ -50,6 +50,13 @@ jest.mock('../services/conversationsService', () => ({
5050
5151describe ( 'conversationsStore' , ( ) => {
5252 const testToken = 'XXTOKENXX'
53+ const previousLastMessage = {
54+ actorType : 'users' ,
55+ actorId : 'admin' ,
56+ systemMessage : '' ,
57+ id : 31 ,
58+ message : 'Message 1' ,
59+ }
5360 let testStoreConfig = null
5461 let testConversation
5562 let localVue = null
@@ -592,6 +599,232 @@ describe('conversationsStore', () => {
592599 } )
593600 } )
594601
602+ describe ( 'update last message' , ( ) => {
603+ beforeEach ( ( ) => {
604+ store = new Vuex . Store ( testStoreConfig )
605+ } )
606+
607+ test ( 'successful update from user' , ( ) => {
608+ const testLastMessage = {
609+ actorType : 'users' ,
610+ actorId : 'admin' ,
611+ systemMessage : '' ,
612+ id : 42 ,
613+ message : 'Message 2' ,
614+ }
615+
616+ testConversation . lastMessage = previousLastMessage
617+
618+ store . dispatch ( 'addConversation' , testConversation )
619+
620+ store . dispatch ( 'updateConversationLastMessage' , {
621+ token : testToken ,
622+ lastMessage : testLastMessage ,
623+ } )
624+
625+ const changedConversation = store . getters . conversation ( testToken )
626+ expect ( changedConversation . lastMessage ) . toBe ( testLastMessage )
627+ } )
628+
629+ test ( 'ignore update from bot' , ( ) => {
630+ const testLastMessage = {
631+ actorType : 'bots' ,
632+ actorId : 'selfmade' ,
633+ systemMessage : '' ,
634+ id : 42 ,
635+ message : 'Message 2' ,
636+ }
637+
638+ testConversation . lastMessage = previousLastMessage
639+
640+ store . dispatch ( 'addConversation' , testConversation )
641+
642+ store . dispatch ( 'updateConversationLastMessage' , {
643+ token : testToken ,
644+ lastMessage : testLastMessage ,
645+ } )
646+
647+ const changedConversation = store . getters . conversation ( testToken )
648+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
649+ } )
650+
651+ test ( 'ignore update from bot but not from changelog' , ( ) => {
652+ const testLastMessage = {
653+ actorType : 'bots' ,
654+ actorId : 'changelog' ,
655+ systemMessage : '' ,
656+ id : 42 ,
657+ message : 'Message 2' ,
658+ }
659+
660+ testConversation . lastMessage = previousLastMessage
661+
662+ store . dispatch ( 'addConversation' , testConversation )
663+
664+ store . dispatch ( 'updateConversationLastMessage' , {
665+ token : testToken ,
666+ lastMessage : testLastMessage ,
667+ } )
668+
669+ const changedConversation = store . getters . conversation ( testToken )
670+ expect ( changedConversation . lastMessage ) . toBe ( testLastMessage )
671+ } )
672+
673+ test ( 'ignore update reactions' , ( ) => {
674+ const testLastMessage = {
675+ actorType : 'users' ,
676+ actorId : 'admin' ,
677+ systemMessage : 'reaction' ,
678+ id : 42 ,
679+ message : '👍' ,
680+ }
681+
682+ testConversation . lastMessage = previousLastMessage
683+
684+ store . dispatch ( 'addConversation' , testConversation )
685+
686+ store . dispatch ( 'updateConversationLastMessage' , {
687+ token : testToken ,
688+ lastMessage : testLastMessage ,
689+ } )
690+
691+ const changedConversation = store . getters . conversation ( testToken )
692+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
693+ } )
694+
695+ test ( 'ignore update from the action of deleting reactions' , ( ) => {
696+ const testLastMessage = {
697+ actorType : 'users' ,
698+ actorId : 'admin' ,
699+ systemMessage : 'reaction_revoked' ,
700+ id : 42 ,
701+ message : 'Admin deleted a reaction' ,
702+ }
703+
704+ testConversation . lastMessage = previousLastMessage
705+
706+ store . dispatch ( 'addConversation' , testConversation )
707+
708+ store . dispatch ( 'updateConversationLastMessage' , {
709+ token : testToken ,
710+ lastMessage : testLastMessage ,
711+ } )
712+
713+ const changedConversation = store . getters . conversation ( testToken )
714+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
715+ } )
716+
717+ test ( 'ignore update deleted reactions (only theory as the action of deleting would come after it anyway)' , ( ) => {
718+ const testLastMessage = {
719+ actorType : 'users' ,
720+ actorId : 'admin' ,
721+ systemMessage : 'reaction_deleted' ,
722+ id : 42 ,
723+ message : 'Reaction deleted by author' ,
724+ }
725+
726+ testConversation . lastMessage = previousLastMessage
727+
728+ store . dispatch ( 'addConversation' , testConversation )
729+
730+ store . dispatch ( 'updateConversationLastMessage' , {
731+ token : testToken ,
732+ lastMessage : testLastMessage ,
733+ } )
734+
735+ const changedConversation = store . getters . conversation ( testToken )
736+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
737+ } )
738+
739+ test ( 'ignore update from deleting a message' , ( ) => {
740+ const testLastMessage = {
741+ actorType : 'users' ,
742+ actorId : 'admin' ,
743+ systemMessage : 'message_deleted' ,
744+ id : 42 ,
745+ message : 'Admin deleted a message' ,
746+ }
747+
748+ testConversation . lastMessage = previousLastMessage
749+
750+ store . dispatch ( 'addConversation' , testConversation )
751+
752+ store . dispatch ( 'updateConversationLastMessage' , {
753+ token : testToken ,
754+ lastMessage : testLastMessage ,
755+ } )
756+
757+ const changedConversation = store . getters . conversation ( testToken )
758+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
759+ } )
760+
761+ test ( 'successfully update temporary messages' , ( ) => {
762+ const testLastMessage = {
763+ actorType : 'users' ,
764+ actorId : 'admin' ,
765+ systemMessage : '' ,
766+ id : 'temp-42' ,
767+ message : 'quit' ,
768+ }
769+
770+ testConversation . lastMessage = previousLastMessage
771+
772+ store . dispatch ( 'addConversation' , testConversation )
773+
774+ store . dispatch ( 'updateConversationLastMessage' , {
775+ token : testToken ,
776+ lastMessage : testLastMessage ,
777+ } )
778+
779+ const changedConversation = store . getters . conversation ( testToken )
780+ expect ( changedConversation . lastMessage ) . toBe ( testLastMessage )
781+ } )
782+
783+ test ( 'successfully update also posted messages which start with a slash' , ( ) => {
784+ const testLastMessage = {
785+ actorType : 'users' ,
786+ actorId : 'admin' ,
787+ systemMessage : '' ,
788+ id : 42 ,
789+ message : '/quit' ,
790+ }
791+
792+ testConversation . lastMessage = previousLastMessage
793+
794+ store . dispatch ( 'addConversation' , testConversation )
795+
796+ store . dispatch ( 'updateConversationLastMessage' , {
797+ token : testToken ,
798+ lastMessage : testLastMessage ,
799+ } )
800+
801+ const changedConversation = store . getters . conversation ( testToken )
802+ expect ( changedConversation . lastMessage ) . toBe ( testLastMessage )
803+ } )
804+
805+ test ( 'ignore update from temporary if posting a command' , ( ) => {
806+ const testLastMessage = {
807+ actorType : 'users' ,
808+ actorId : 'admin' ,
809+ systemMessage : '' ,
810+ id : 'temp-42' ,
811+ message : '/quit' ,
812+ }
813+
814+ testConversation . lastMessage = previousLastMessage
815+
816+ store . dispatch ( 'addConversation' , testConversation )
817+
818+ store . dispatch ( 'updateConversationLastMessage' , {
819+ token : testToken ,
820+ lastMessage : testLastMessage ,
821+ } )
822+
823+ const changedConversation = store . getters . conversation ( testToken )
824+ expect ( changedConversation . lastMessage ) . toBe ( previousLastMessage )
825+ } )
826+ } )
827+
595828 describe ( 'creating conversations' , ( ) => {
596829 test ( 'creates one to one conversation' , async ( ) => {
597830 const newConversation = {
0 commit comments