Skip to content

Commit 42ada70

Browse files
committed
[IMP] sign_oca: add test cases
1 parent 001eeae commit 42ada70

File tree

1 file changed

+135
-1
lines changed

1 file changed

+135
-1
lines changed

sign_oca/tests/test_sign_portal.py

Lines changed: 135 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
33

44
import base64
5+
from unittest.mock import Mock, patch
56

67
from odoo.modules.module import get_module_resource
8+
from odoo.tests import users
79
from odoo.tests.common import HttpCase, tagged
810

11+
from ..controllers.main import PortalSign
12+
913

1014
@tagged("post_install", "-at_install")
1115
class TestSign(HttpCase):
@@ -18,6 +22,8 @@ def setUp(self):
1822
).read()
1923
)
2024
self.signer = self.env["res.partner"].create({"name": "Signer"})
25+
self.portal_user = self.env.ref("base.demo_user0")
26+
self.portal_partner = self.portal_user.partner_id
2127
self.request = self.env["sign.oca.request"].create(
2228
{
2329
"data": self.data,
@@ -30,7 +36,23 @@ def setUp(self):
3036
"partner_id": self.signer.id,
3137
"role_id": self.env.ref("sign_oca.sign_role_customer").id,
3238
},
33-
)
39+
),
40+
],
41+
}
42+
)
43+
self.request2 = self.env["sign.oca.request"].create(
44+
{
45+
"data": self.data,
46+
"name": "Demo template",
47+
"signer_ids": [
48+
(
49+
0,
50+
0,
51+
{
52+
"partner_id": self.portal_partner.id,
53+
"role_id": self.env.ref("sign_oca.sign_role_customer").id,
54+
},
55+
),
3456
],
3557
}
3658
)
@@ -45,6 +67,18 @@ def setUp(self):
4567
"height": 10,
4668
}
4769
)
70+
self.item2 = self.request2.add_item(
71+
{
72+
"role_id": self.env.ref("sign_oca.sign_role_customer").id,
73+
"field_id": self.env.ref("sign_oca.sign_field_name").id,
74+
"page": 1,
75+
"position_x": 10,
76+
"position_y": 10,
77+
"width": 10,
78+
"height": 10,
79+
}
80+
)
81+
self.portal_sign = PortalSign()
4882

4983
def test_portal(self):
5084
self.authenticate("portal", "portal")
@@ -71,3 +105,103 @@ def test_portal(self):
71105
val = self.request.signer_ids.get_info()["items"][key].copy()
72106
val["value"] = "My Name"
73107
data[key] = val
108+
109+
def test_get_sign_requests_domain(self):
110+
self.domain = self.portal_sign.get_sign_requests_domain(request=self)
111+
expected_domain = [
112+
("request_id.state", "=", "sent"),
113+
("partner_id", "child_of", [self.env.user.partner_id.id]),
114+
("signed_on", "=", False),
115+
]
116+
self.assertEqual(sorted(self.domain), sorted(expected_domain))
117+
118+
def test_mocked_portal_methods(self):
119+
domain = [("partner_id", "in", [self.signer.id])]
120+
SignRequests = self.env["sign.oca.request.signer"].sudo()
121+
sign_requests = SignRequests.search(domain)
122+
expected_values = {
123+
"sales_user": self.env["res.users"],
124+
"page_name": "My Sign Requests",
125+
"sign_requests": sign_requests,
126+
"pager": {
127+
"page_count": 2,
128+
"offset": 0,
129+
"page": {"url": "/my/sign_requests", "num": 1},
130+
"page_first": {"url": "/my/sign_requests", "num": 1},
131+
"page_start": {"url": "/my/sign_requests", "num": 1},
132+
"page_previous": {"url": "/my/sign_requests", "num": 1},
133+
"page_next": {"url": "/my/sign_requests/page/2", "num": 1},
134+
"page_end": {"url": "/my/sign_requests/page/2", "num": 1},
135+
"page_last": {"url": "/my/sign_requests/page/2", "num": 1},
136+
"pages": [{"url": "/my/sign_requests", "num": 1}],
137+
},
138+
"default_url": "/my/sign_requests",
139+
}
140+
expected_domain = [
141+
("request_id.state", "=", "sent"),
142+
("partner_id", "child_of", [self.env.user.partner_id.id]),
143+
("signed_on", "=", False),
144+
]
145+
expected_home_values = {"sign_oca_count": 1}
146+
147+
class Capture:
148+
mock_response = Mock()
149+
150+
def get_sign_requests_domain(self, request):
151+
self.mock_response.domain = expected_domain
152+
return self.mock_response
153+
154+
def _prepare_sign_portal_rendering_values(
155+
self, request, page=1, sign_page=False, **kwargs
156+
):
157+
self.mock_response.values = expected_values
158+
return self.mock_response
159+
160+
def _prepare_home_portal_values(self, counters):
161+
self.mock_response.home_values = {"sign_oca_count": len(sign_requests)}
162+
return self.mock_response
163+
164+
capture = Capture()
165+
166+
with patch(
167+
"odoo.addons.sign_oca.controllers.main.PortalSign.get_sign_requests_domain",
168+
capture.get_sign_requests_domain,
169+
):
170+
response = self.portal_sign.get_sign_requests_domain(capture.mock_response)
171+
self.assertEqual(response.domain, expected_domain)
172+
173+
with patch(
174+
(
175+
"odoo.addons.sign_oca.controllers.main.PortalSign"
176+
"._prepare_sign_portal_rendering_values"
177+
),
178+
capture._prepare_sign_portal_rendering_values,
179+
):
180+
response = self.portal_sign._prepare_sign_portal_rendering_values(
181+
request=capture.mock_response, page=1, sign_page=False, kwargs={}
182+
)
183+
self.assertEqual(response.values, expected_values)
184+
185+
with patch(
186+
(
187+
"odoo.addons.sign_oca.controllers.main.PortalSign"
188+
"._prepare_home_portal_values"
189+
),
190+
capture._prepare_home_portal_values,
191+
):
192+
response = self.portal_sign._prepare_home_portal_values(
193+
counters=["sign_oca_count"]
194+
)
195+
self.assertEqual(response.home_values, expected_home_values)
196+
197+
@users("portal")
198+
def test_sign_requests(self):
199+
self.authenticate("portal", "portal")
200+
self.request2.action_send()
201+
self.url_open("/my/sign_requests").raise_for_status()
202+
response = self.url_open("/my/sign_requests")
203+
assert response.status_code == 200
204+
html = response.text
205+
assert "Sign Requests" in html
206+
assert "To be Signed" in html
207+
assert "Demo template" in html

0 commit comments

Comments
 (0)