@@ -237,6 +237,7 @@ def test_register_initial_desired_events(self, mocker, initial_data):
237237 "message" ,
238238 "update_message" ,
239239 "reaction" ,
240+ "submessage" ,
240241 "subscription" ,
241242 "typing" ,
242243 "update_message_flags" ,
@@ -2913,6 +2914,235 @@ def test__handle_reaction_event_for_msg_in_index(
29132914
29142915 model ._update_rendered_view .assert_called_once_with (event_message_id )
29152916
2917+ @pytest .mark .parametrize (
2918+ "submessages, event, expected_updated_submessage" ,
2919+ [
2920+ case (
2921+ [
2922+ {
2923+ "id" : 1 ,
2924+ "message_id" : 1958326 ,
2925+ "sender_id" : 27294 ,
2926+ "msg_type" : "widget" ,
2927+ "content" : (
2928+ '{"widget_type": "todo", "extra_data": '
2929+ '{"task_list_title": "Today\' s Work", "tasks": [{"task"'
2930+ ': "Handle submessages events on ZT", "desc": ""}, {"task":'
2931+ ' "Play ping pong", "desc": ""}]}}'
2932+ ),
2933+ }
2934+ ],
2935+ {
2936+ "type" : "submessage" ,
2937+ "msg_type" : "widget" ,
2938+ "message_id" : 1958326 ,
2939+ "submessage_id" : 1 ,
2940+ "sender_id" : 27294 ,
2941+ "content" : '{"type":"strike","key":"0,canned"}' ,
2942+ "id" : 1 ,
2943+ },
2944+ [
2945+ {
2946+ "id" : 1 ,
2947+ "message_id" : 1958326 ,
2948+ "sender_id" : 27294 ,
2949+ "msg_type" : "widget" ,
2950+ "content" : (
2951+ '{"widget_type": "todo", "extra_data": '
2952+ '{"task_list_title": "Today\' s Work", "tasks": '
2953+ '[{"task": "Handle submessages events on ZT", "desc": ""}, '
2954+ '{"task": "Play ping pong", "desc": ""}]}}'
2955+ ),
2956+ },
2957+ {
2958+ "type" : "submessage" ,
2959+ "msg_type" : "widget" ,
2960+ "message_id" : 1958326 ,
2961+ "submessage_id" : 1 ,
2962+ "sender_id" : 27294 ,
2963+ "content" : '{"type":"strike","key":"0,canned"}' ,
2964+ },
2965+ ],
2966+ id = "submessage_strike_event_todo_widget" ,
2967+ ),
2968+ case (
2969+ [
2970+ {
2971+ "id" : 1 ,
2972+ "message_id" : 1958326 ,
2973+ "sender_id" : 27294 ,
2974+ "msg_type" : "widget" ,
2975+ "content" : (
2976+ '{"widget_type": "todo", "extra_data": '
2977+ '{"task_list_title": "Today\' s Work", "tasks": [{"task": '
2978+ '"Handle submessages events on ZT", "desc": ""}, {"task": '
2979+ '"Play ping pong", "desc": ""}]}}'
2980+ ),
2981+ },
2982+ {
2983+ "id" : 12154 ,
2984+ "message_id" : 1958326 ,
2985+ "sender_id" : 27294 ,
2986+ "msg_type" : "widget" ,
2987+ "content" : '{"type":"strike","key":"0,canned"}' ,
2988+ },
2989+ ],
2990+ {
2991+ "type" : "submessage" ,
2992+ "msg_type" : "widget" ,
2993+ "message_id" : 1958326 ,
2994+ "submessage_id" : 12185 ,
2995+ "sender_id" : 27294 ,
2996+ "content" : (
2997+ '{"type":"new_task","key":2,"task":"Make a coffee",'
2998+ '"desc":"","completed":false}'
2999+ ),
3000+ "id" : 0 ,
3001+ },
3002+ [
3003+ {
3004+ "id" : 1 ,
3005+ "message_id" : 1958326 ,
3006+ "sender_id" : 27294 ,
3007+ "msg_type" : "widget" ,
3008+ "content" : (
3009+ '{"widget_type": "todo", "extra_data": '
3010+ '{"task_list_title": "Today\' s Work", "tasks": [{"task": '
3011+ '"Handle submessages events on ZT", "desc": ""}, {"task": '
3012+ '"Play ping pong", "desc": ""}]}}'
3013+ ),
3014+ },
3015+ {
3016+ "id" : 12154 ,
3017+ "message_id" : 1958326 ,
3018+ "sender_id" : 27294 ,
3019+ "msg_type" : "widget" ,
3020+ "content" : '{"type":"strike","key":"0,canned"}' ,
3021+ },
3022+ {
3023+ "type" : "submessage" ,
3024+ "msg_type" : "widget" ,
3025+ "message_id" : 1958326 ,
3026+ "submessage_id" : 12185 ,
3027+ "sender_id" : 27294 ,
3028+ "content" : (
3029+ '{"type":"new_task","key":2,"task":"Make a coffee",'
3030+ '"desc":"","completed":false}'
3031+ ),
3032+ },
3033+ ],
3034+ id = "submessage_new_task_event_todo_widget" ,
3035+ ),
3036+ case (
3037+ [
3038+ {
3039+ "id" : 12153 ,
3040+ "message_id" : 1958326 ,
3041+ "sender_id" : 27294 ,
3042+ "msg_type" : "widget" ,
3043+ "content" : (
3044+ '{"widget_type": "todo", "extra_data": '
3045+ '{"task_list_title": "Today\' s Work", "tasks": [{"task": '
3046+ '"Handle submessages events on ZT", "desc": ""}, {"task": '
3047+ '"Play ping pong", "desc": ""}]}}'
3048+ ),
3049+ },
3050+ {
3051+ "id" : 12154 ,
3052+ "message_id" : 1958326 ,
3053+ "sender_id" : 27294 ,
3054+ "msg_type" : "widget" ,
3055+ "content" : '{"type":"strike","key":"0,canned"}' ,
3056+ },
3057+ {
3058+ "type" : "submessage" ,
3059+ "msg_type" : "widget" ,
3060+ "message_id" : 1958326 ,
3061+ "submessage_id" : 12185 ,
3062+ "sender_id" : 27294 ,
3063+ "content" : (
3064+ '{"type":"new_task","key":2,"task":"Make a coffee"'
3065+ ',"desc":"","completed":false}'
3066+ ),
3067+ "id" : 0 ,
3068+ },
3069+ ],
3070+ {
3071+ "type" : "submessage" ,
3072+ "msg_type" : "widget" ,
3073+ "message_id" : 1958326 ,
3074+ "submessage_id" : 12186 ,
3075+ "sender_id" : 27294 ,
3076+ "content" : (
3077+ '{"type":"new_task_list_title","title":"Today\' s Work '
3078+ '[Updated]"}'
3079+ ),
3080+ "id" : 11 ,
3081+ },
3082+ [
3083+ {
3084+ "id" : 12153 ,
3085+ "message_id" : 1958326 ,
3086+ "sender_id" : 27294 ,
3087+ "msg_type" : "widget" ,
3088+ "content" : (
3089+ '{"widget_type": "todo", "extra_data": '
3090+ '{"task_list_title": "Today\' s Work", "tasks": [{"task": '
3091+ '"Handle submessages events on ZT", "desc": ""}, {"task": '
3092+ '"Play ping pong", "desc": ""}]}}'
3093+ ),
3094+ },
3095+ {
3096+ "id" : 12154 ,
3097+ "message_id" : 1958326 ,
3098+ "sender_id" : 27294 ,
3099+ "msg_type" : "widget" ,
3100+ "content" : '{"type":"strike","key":"0,canned"}' ,
3101+ },
3102+ {
3103+ "type" : "submessage" ,
3104+ "msg_type" : "widget" ,
3105+ "message_id" : 1958326 ,
3106+ "submessage_id" : 12185 ,
3107+ "sender_id" : 27294 ,
3108+ "content" : (
3109+ '{"type":"new_task","key":2,"task":"Make a coffee"'
3110+ ',"desc":"","completed":false}'
3111+ ),
3112+ "id" : 0 ,
3113+ },
3114+ {
3115+ "type" : "submessage" ,
3116+ "msg_type" : "widget" ,
3117+ "message_id" : 1958326 ,
3118+ "submessage_id" : 12186 ,
3119+ "sender_id" : 27294 ,
3120+ "content" : (
3121+ '{"type":"new_task_list_title",'
3122+ '"title":"Today\' s Work [Updated]"}'
3123+ ),
3124+ },
3125+ ],
3126+ id = "submessage_new_task_list_title_event_todo_widget" ,
3127+ ),
3128+ ],
3129+ )
3130+ def test__handle_submessage_event (
3131+ self ,
3132+ mocker ,
3133+ model ,
3134+ submessages ,
3135+ event ,
3136+ expected_updated_submessage ,
3137+ id = 1958326 ,
3138+ ):
3139+ model .index ["messages" ][id ]["submessages" ] = submessages
3140+ model ._update_rendered_view = mocker .Mock ()
3141+
3142+ model ._handle_submessage_event (event )
3143+
3144+ assert model .index ["messages" ][id ]["submessages" ] == expected_updated_submessage
3145+
29163146 @pytest .fixture (
29173147 params = [
29183148 ("op" , 32 ), # At server feature level 32, event uses standard field
0 commit comments