forked from Mapan/odoo17e
113 lines
5.1 KiB
Python
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
|