60 lines
2.9 KiB
Python
60 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import Command
|
|
from odoo.addons.survey.tests.common import TestSurveyCommon
|
|
|
|
|
|
class TestCourseCertificationStats(TestSurveyCommon):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
|
|
# Create certifications
|
|
cls.certifications = cls.env["survey.survey"].create([{
|
|
"title": f"certification {i + 1}",
|
|
"scoring_type": "scoring_with_answers",
|
|
"certification": True,
|
|
} for i in range(3)])
|
|
|
|
# Create courses and link them to certifications
|
|
[cls.course_1, cls.course_2, cls.course_3] = cls.env["slide.channel"].create([{
|
|
"name": f"Course {i +1}",
|
|
"enroll": "public",
|
|
"is_published": True,
|
|
"slide_ids": [Command.create({
|
|
"name": f"Certification {i + 1} slide",
|
|
"slide_category": "certification",
|
|
"survey_id": cls.certifications.ids[i],
|
|
"is_published": True,
|
|
})]} for i in range(3)])
|
|
|
|
# Create course participants
|
|
cls.participants = cls.survey_user + cls.user_emp + cls.user_portal
|
|
cls.courses = cls.course_1 + cls.course_2 + cls.course_3
|
|
cls.partner_memberships = cls.courses._action_add_members(cls.participants.partner_id)
|
|
|
|
# Set certified/not certified participants
|
|
cls.slide_partners = cls.env["slide.slide.partner"].create([{
|
|
"channel_id": slide.channel_id.id,
|
|
"partner_id": partner.id,
|
|
"slide_id": slide.id,
|
|
} for slide in cls.courses.slide_ids for partner in cls.participants.partner_id])
|
|
|
|
cls.slide_partners[0].survey_scoring_success = True # survey_user certified for course_1
|
|
cls.slide_partners[-1].survey_scoring_success = True # user_portal certified for course_3
|
|
cls.slide_partners._recompute_completion() # update slide_channel_partner.survey_certification_success
|
|
|
|
def test_membership_certification_fields(self):
|
|
self.assertEqual(self.course_1.members_certified_count, 1)
|
|
self.assertEqual(self.course_2.members_certified_count, 0)
|
|
self.assertEqual(self.course_3.members_certified_count, 1)
|
|
|
|
certified_partners_memberships = self.partner_memberships.filtered(lambda membership: (
|
|
membership.channel_id == self.course_1 and membership.partner_id == self.survey_user.partner_id) or (
|
|
membership.channel_id == self.course_3 and membership.partner_id == self.user_portal.partner_id))
|
|
non_certified_partners_memberships = self.partner_memberships - certified_partners_memberships
|
|
|
|
self.assertTrue(all(certified_partners_memberships.mapped('survey_certification_success')))
|
|
self.assertFalse(any(non_certified_partners_memberships.mapped('survey_certification_success')))
|