diff options
| author | ryv-odoo <ryv@odoo.com> | 2019-08-02 12:40:13 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-08-12 15:40:36 +0000 |
| commit | 9c1f2f87efb3177d5568f0e1f574146296e28ec1 (patch) | |
| tree | e76085f8d5f807fb21863a0b323c7ef16a00c8eb /addons/website_slides/tests | |
| parent | 691439ade5d149d5a3044fb0064dbcc8c6281e39 (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.py | 34 |
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): |
