summaryrefslogtreecommitdiff
path: root/addons/website_slides/tests
diff options
context:
space:
mode:
authorryv-odoo <ryv@odoo.com>2019-08-02 12:40:13 +0000
committerThibault Delavallée <tde@odoo.com>2019-08-12 15:40:36 +0000
commit9c1f2f87efb3177d5568f0e1f574146296e28ec1 (patch)
treee76085f8d5f807fb21863a0b323c7ef16a00c8eb /addons/website_slides/tests
parent691439ade5d149d5a3044fb0064dbcc8c6281e39 (diff)
[IMP] website_slides: allow to remove attendees
PURPOSE Improve attendees management by adding a button to remove them in backend of eLearning. SPECIFCIATIONS In order to easily remove a attendee from a channel, we add a button in the slide_channel_partner tree view, accessible from channels (attendees). Remove a slide_channel_partner implies to remove the related slide_slide_partner. Also code backtracking for the view of attendees of a course: we redirect to the slide.channel.partner model instead of res.parter because we want the possibility to create/remove/edit attendees for a course and not making action on res.partner model itself. Task ID 2045620
Diffstat (limited to 'addons/website_slides/tests')
-rw-r--r--addons/website_slides/tests/test_security.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/addons/website_slides/tests/test_security.py b/addons/website_slides/tests/test_security.py
index b1e6a979a9d..0ac21ba813d 100644
--- a/addons/website_slides/tests/test_security.py
+++ b/addons/website_slides/tests/test_security.py
@@ -123,6 +123,40 @@ class TestAccess(common.SlidesCase):
self.slide.with_user(self.user_public).read(['name'])
+@tagged('functional', 'security')
+class TestRemoveMembership(common.SlidesCase):
+
+ def setUp(self):
+ super(TestRemoveMembership, self).setUp()
+ self.channel_partner = self.env['slide.channel.partner'].create({
+ 'channel_id': self.channel.id,
+ 'partner_id': self.customer.id,
+ })
+
+ self.slide_partner = self.env['slide.slide.partner'].create({
+ 'slide_id': self.slide.id,
+ 'channel_id': self.channel.id,
+ 'partner_id': self.customer.id
+ })
+
+ def test_security_unlink(self):
+ # Only the publisher can unlink channel_partner (and slide_partner by extension)
+ with self.assertRaises(AccessError):
+ self.channel_partner.with_user(self.user_public).unlink()
+ with self.assertRaises(AccessError):
+ self.channel_partner.with_user(self.user_portal).unlink()
+ with self.assertRaises(AccessError):
+ self.channel_partner.with_user(self.user_emp).unlink()
+
+ def test_slide_partner_remove(self):
+ id_slide_partner = self.slide_partner.id
+ id_channel_partner = self.channel_partner.id
+ self.channel_partner.with_user(self.user_publisher).unlink()
+ self.assertFalse(self.env['slide.channel.partner'].search([('id', '=', '%d' % id_channel_partner)]))
+ # Slide(s) related to the channel and the partner is unlink too.
+ self.assertFalse(self.env['slide.slide.partner'].search([('id', '=', '%d' % id_slide_partner)]))
+
+
@tagged('functional')
class TestAccessFeatures(common.SlidesCase):