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

113 lines
5.1 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from contextlib import contextmanager
from unittest.mock import patch
try:
from odoo.addons.social_facebook.models.social_account import SocialAccountFacebook
from odoo.addons.social_facebook.models.social_live_post import SocialLivePostFacebook
from odoo.addons.social_facebook.models.social_stream import SocialStreamFacebook
is_facebook_module_installed = True
except ImportError:
is_facebook_module_installed = False
try:
from odoo.addons.social_instagram.models.social_account import SocialAccountInstagram
from odoo.addons.social_instagram.models.social_live_post import SocialLivePostInstagram
from odoo.addons.social_instagram.models.social_post import SocialPostInstagram
from odoo.addons.social_instagram.models.social_stream import SocialStreamInstagram
is_instagram_module_installed = True
except ImportError:
is_instagram_module_installed = False
try:
from odoo.addons.social_linkedin.models.social_account import SocialAccountLinkedin
from odoo.addons.social_linkedin.models.social_live_post import SocialLivePostLinkedin
from odoo.addons.social_linkedin.models.social_stream import SocialStreamLinkedIn
is_linkedin_module_installed = True
except ImportError:
is_linkedin_module_installed = False
try:
from odoo.addons.social_twitter.models.social_account import SocialAccountTwitter
from odoo.addons.social_twitter.models.social_live_post import SocialLivePostTwitter
from odoo.addons.social_twitter.models.social_stream import SocialStreamTwitter
is_twitter_module_installed = True
except ImportError:
is_twitter_module_installed = False
try:
from odoo.addons.social_youtube.models.social_account import SocialAccountYoutube
from odoo.addons.social_youtube.models.social_live_post import SocialLivePostYoutube
from odoo.addons.social_youtube.models.social_stream import SocialStreamYoutube
is_youtube_module_installed = True
except ImportError:
is_youtube_module_installed = False
@contextmanager
def mock_void_external_calls():
""" Often, when testing social modules, we want to void all outgoing external calls methods.
This method creates a handy context manager that will void all external calls at once. """
with mock_void_external_calls_facebook(), \
mock_void_external_calls_instagram(), \
mock_void_external_calls_twitter(), \
mock_void_external_calls_linkedin(), \
mock_void_external_calls_youtube():
yield
@contextmanager
def mock_void_external_calls_facebook():
if is_facebook_module_installed:
with patch.object(SocialAccountFacebook, '_compute_statistics', lambda x: None), \
patch.object(SocialAccountFacebook, '_create_default_stream_facebook', lambda *args, **kwargs: None), \
patch.object(SocialLivePostFacebook, '_post_facebook', lambda x: None), \
patch.object(SocialStreamFacebook, '_fetch_stream_data', lambda x: None):
yield
else:
yield
@contextmanager
def mock_void_external_calls_instagram():
if is_instagram_module_installed:
with patch.object(SocialAccountInstagram, '_compute_statistics', lambda x: None), \
patch.object(SocialAccountInstagram, '_create_default_stream_instagram', lambda *args, **kwargs: None), \
patch.object(SocialLivePostInstagram, '_post_instagram', lambda x: None), \
patch.object(SocialPostInstagram, '_check_post_access', lambda x: False), \
patch.object(SocialStreamInstagram, '_fetch_stream_data', lambda x: None):
yield
else:
yield
@contextmanager
def mock_void_external_calls_linkedin():
if is_linkedin_module_installed:
with patch.object(SocialAccountLinkedin, '_compute_statistics', lambda x: None), \
patch.object(SocialAccountLinkedin, '_create_default_stream_linkedin', lambda *args, **kwargs: None), \
patch.object(SocialLivePostLinkedin, '_post_linkedin', lambda x: None), \
patch.object(SocialStreamLinkedIn, '_fetch_stream_data', lambda x: None):
yield
else:
yield
@contextmanager
def mock_void_external_calls_twitter():
if is_twitter_module_installed:
with patch.object(SocialAccountTwitter, '_compute_statistics', lambda x: None), \
patch.object(SocialAccountTwitter, '_create_default_stream_twitter', lambda *args, **kwargs: None), \
patch.object(SocialLivePostTwitter, '_post_twitter', lambda x: None), \
patch.object(SocialStreamTwitter, '_fetch_stream_data', lambda x: None):
yield
else:
yield
@contextmanager
def mock_void_external_calls_youtube():
if is_youtube_module_installed:
with patch.object(SocialAccountYoutube, '_create_default_stream_youtube', lambda *args, **kwargs: None), \
patch.object(SocialLivePostYoutube, '_post_youtube', lambda x: None), \
patch.object(SocialStreamYoutube, '_fetch_stream_data', lambda x: None):
yield
else:
yield