3aadab5628
If location does not throw, but reports an empty public IP, return "n/a". Since this caused a bug, also add a test for it. fixes #853
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import pytest
|
|
from unittest import TestCase, mock
|
|
|
|
import core.config
|
|
import core.widget
|
|
import modules.contrib.publicip
|
|
|
|
|
|
def build_module():
|
|
config = core.config.Config([])
|
|
return modules.contrib.publicip.Module(config=config, theme=None)
|
|
|
|
def widget(module):
|
|
return module.widgets()[0]
|
|
|
|
class PublicIPTest(TestCase):
|
|
def test_load_module(self):
|
|
__import__("modules.contrib.publicip")
|
|
|
|
@mock.patch('util.location.public_ip')
|
|
def test_public_ip(self, public_ip_mock):
|
|
public_ip_mock.return_value = '5.12.220.2'
|
|
|
|
module = build_module()
|
|
module.update()
|
|
|
|
assert widget(module).full_text() == '5.12.220.2'
|
|
|
|
@mock.patch('util.location.public_ip')
|
|
def test_public_ip(self, public_ip_mock):
|
|
public_ip_mock.return_value = None
|
|
|
|
module = build_module()
|
|
module.update()
|
|
|
|
assert widget(module).full_text() == 'n/a'
|
|
|
|
@mock.patch('util.location.public_ip')
|
|
def test_public_ip_with_exception(self, public_ip_mock):
|
|
public_ip_mock.side_effect = Exception
|
|
|
|
module = build_module()
|
|
module.update()
|
|
|
|
assert widget(module).full_text() == 'n/a'
|
|
|
|
def test_interval_seconds(self):
|
|
module = build_module()
|
|
|
|
assert module.parameter('interval') == 3600
|