77
88
99class TestMessageReply (TransactionCase ):
10- def test_reply (self ):
10+ def test_quoted_reply (self ):
1111 partner = self .env ["res.partner" ].create ({"name" : "demo partner" })
1212 self .assertFalse (
1313 partner .message_ids .filtered (lambda r : r .message_type != "notification" )
1414 )
1515 # pylint: disable=C8107
1616 message = partner .message_post (
1717 body = "demo message" ,
18+ subject = "demo subject" ,
1819 message_type = "email" ,
19- partner_ids = self .env .ref ("base.partner_demo " ).ids ,
20+ partner_ids = self .env .ref ("base.partner_admin " ).ids ,
2021 )
2122 partner .invalidate_recordset ()
2223 self .assertIn (
@@ -34,9 +35,92 @@ def test_reply(self):
3435 )
3536 self .assertTrue (wizard .partner_ids )
3637 self .assertEqual (message .email_from , wizard .partner_ids .email_formatted )
38+ self .assertEqual (action ["context" ]["default_subject" ], "Re: demo subject" )
3739 # the onchange in the composer isn't triggered in tests, so we check for the
3840 # correct quote in the context
39- email_quote = re .search ("<p>.*?</p>" , wizard ._context ["quote_body" ]).group ()
41+ email_quote = re .search ("<p>.*?</p>" , wizard .env .context ["quote_body" ]).group ()
42+ self .assertEqual ("<p>demo message</p>" , email_quote )
43+ wizard .action_send_mail ()
44+ new_message = partner .message_ids .filtered (
45+ lambda r : r .message_type != "notification" and r != message
46+ )
47+ self .assertTrue (new_message )
48+ self .assertEqual (1 , len (new_message ))
49+
50+ def test_unquoted_reply (self ):
51+ partner = self .env ["res.partner" ].create ({"name" : "demo partner" })
52+ self .assertFalse (
53+ partner .message_ids .filtered (lambda r : r .message_type != "notification" )
54+ )
55+ # pylint: disable=C8107
56+ message = partner .message_post (
57+ body = "demo message" ,
58+ message_type = "email" ,
59+ partner_ids = self .env .ref ("base.partner_admin" ).ids ,
60+ )
61+ partner .invalidate_recordset ()
62+ self .assertIn (
63+ message ,
64+ partner .message_ids .filtered (lambda r : r .message_type != "notification" ),
65+ )
66+ self .assertFalse (
67+ partner .message_ids .filtered (
68+ lambda r : r .message_type != "notification" and r != message
69+ )
70+ )
71+ action = message .reply_message ()
72+ action ["context" ]["is_quoted_reply" ] = False
73+ wizard = (
74+ self .env [action ["res_model" ]].with_context (** action ["context" ]).create ({})
75+ )
76+ wizard = wizard .with_context (
77+ default_subject = "Some subject for testing purposes" ,
78+ )
79+ self .assertTrue (wizard .partner_ids )
80+ self .assertEqual (message .email_from , wizard .partner_ids .email_formatted )
81+ # the onchange in the composer isn't triggered in tests, so we check for the
82+ # correct quote in the context
83+ email_quote = re .search ("<p>.*?</p>" , wizard .env .context ["quote_body" ]).group ()
84+ self .assertEqual ("<p>demo message</p>" , email_quote )
85+ wizard .action_send_mail ()
86+ new_message = partner .message_ids .filtered (
87+ lambda r : r .message_type != "notification" and r != message
88+ )
89+ self .assertTrue (new_message )
90+ self .assertEqual (1 , len (new_message ))
91+
92+ def test_reply_with_existing_body (self ):
93+ partner = self .env ["res.partner" ].create ({"name" : "demo partner" })
94+ self .assertFalse (
95+ partner .message_ids .filtered (lambda r : r .message_type != "notification" )
96+ )
97+ # pylint: disable=C8107
98+ message = partner .message_post (
99+ body = "demo message" ,
100+ message_type = "email" ,
101+ partner_ids = self .env .ref ("base.partner_admin" ).ids ,
102+ )
103+ partner .invalidate_recordset ()
104+ self .assertIn (
105+ message ,
106+ partner .message_ids .filtered (lambda r : r .message_type != "notification" ),
107+ )
108+ self .assertFalse (
109+ partner .message_ids .filtered (
110+ lambda r : r .message_type != "notification" and r != message
111+ )
112+ )
113+ action = message .reply_message ()
114+ action ["context" ]["is_quoted_reply" ] = False
115+ wizard = (
116+ self .env [action ["res_model" ]].with_context (** action ["context" ]).create ({})
117+ )
118+ wizard .body = "Some body for testing purposes"
119+ self .assertTrue (wizard .partner_ids )
120+ self .assertEqual (message .email_from , wizard .partner_ids .email_formatted )
121+ # the onchange in the composer isn't triggered in tests, so we check for the
122+ # correct quote in the context
123+ email_quote = re .search ("<p>.*?</p>" , wizard .env .context ["quote_body" ]).group ()
40124 self .assertEqual ("<p>demo message</p>" , email_quote )
41125 wizard .action_send_mail ()
42126 new_message = partner .message_ids .filtered (
0 commit comments