from odoo.tests.common import TransactionCase, tagged @tagged('post_install', '-at_install') class TestMembership(TransactionCase): def test_tier_creates_product(self): tier = self.env['community.membership.tier'].create({ 'name': 'Individual', 'code': 'IND', 'price': 50.0, 'period': 'annual', }) self.assertTrue(tier.product_id, "Creating a tier should auto-create a membership product") self.assertEqual(tier.product_id.list_price, 50.0) def test_member_id_generated_on_activation(self): tier = self.env['community.membership.tier'].create({ 'name': 'Individual', 'code': 'IND2', 'price': 50.0, 'period': 'annual', }) partner = self.env['res.partner'].create({ 'name': 'Jane Member', 'membership_tier_id': tier.id, }) self.assertFalse(partner.membership_member_id) self.assertEqual(partner.membership_state, 'none') partner.action_activate_membership() self.assertEqual(partner.membership_state, 'active') self.assertTrue(partner.membership_member_id, "Member ID should be generated on activation") self.assertTrue(partner.membership_member_id.startswith('MEM-')) self.assertTrue(partner.membership_start) self.assertTrue(partner.membership_expiry, "Annual tier should compute an expiry date") def test_one_time_tier_never_expires(self): tier = self.env['community.membership.tier'].create({ 'name': 'Lifetime', 'code': 'LIFE', 'price': 500.0, 'period': 'one_time', }) partner = self.env['res.partner'].create({ 'name': 'Life Member', 'membership_tier_id': tier.id, }) partner.action_activate_membership() self.assertEqual(partner.membership_state, 'active') self.assertFalse(partner.membership_expiry, "One-time/lifetime tier should not set an expiry") def test_member_id_format_is_configurable(self): self.env['ir.config_parameter'].sudo().set_param( 'community_membership.member_id_format', 'TESTORG-{year}-{seq}' ) tier = self.env['community.membership.tier'].create({ 'name': 'Individual', 'code': 'IND3', 'price': 50.0, 'period': 'annual', }) partner = self.env['res.partner'].create({ 'name': 'Custom Format Member', 'membership_tier_id': tier.id, }) partner.action_activate_membership() self.assertTrue(partner.membership_member_id.startswith('TESTORG-'))