1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/social_push_notifications/tests/test_push_subscription_internals.py
2024-12-10 09:04:09 +07:00

44 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests import common
class TestPushToken(common.TransactionCase):
def test_push_token_unique(self):
""" Ensure the 'push_token' field is unique.
When trying to insert an identical push_token, the existing one has to be unlinked first. """
common_push_token = 'ABC123'
visitor_1 = self.env['website.visitor'].create({'access_token': 'f9d2b3e247685b628b8e96f5788cf40a'})
push_token_1 = visitor_1._register_push_subscription(common_push_token)
self.assertEqual(visitor_1.push_subscription_ids[0], push_token_1)
self.assertTrue(visitor_1.has_push_notifications)
visitor_2 = self.env['website.visitor'].create({'access_token': 'f9d28377d61080c17076c35d9a1bccb5'})
push_token_2 = visitor_2._register_push_subscription(common_push_token)
self.assertFalse(bool(visitor_1.push_subscription_ids))
self.assertFalse(visitor_1.has_push_notifications)
self.assertEqual(visitor_2.push_subscription_ids[0], push_token_2)
self.assertTrue(visitor_2.has_push_notifications)
def test_sync_has_push_notification(self):
visitor_1 = self.env['website.visitor'].create({'access_token': 'f9d20bd006c3bf46b875451defb5991d'})
push_token_1 = visitor_1._register_push_subscription('ABC123')
self.assertTrue(visitor_1.has_push_notifications)
push_token_2 = visitor_1._register_push_subscription('ABC456')
self.assertTrue(visitor_1.has_push_notifications)
push_token_1.unlink()
self.assertTrue(visitor_1.has_push_notifications)
push_token_2.unlink()
# when removing the last push notification, the flag has to be set to False
self.assertFalse(visitor_1.has_push_notifications)