Skip to content

Commit 9f7c4c1

Browse files
committed
Update tests to handle changes to _wmi_init
1 parent 680c47b commit 9f7c4c1

File tree

2 files changed

+42
-25
lines changed

2 files changed

+42
-25
lines changed

tests/mocks/windows_mock.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from contextlib import contextmanager
12
import re
23
from collections import namedtuple
34
from ctypes.wintypes import HMONITOR
@@ -110,8 +111,9 @@ def SetVCPFeature(handle, code, value_in):
110111
return 1
111112

112113

114+
@contextmanager
113115
def mock_wmi_init():
114-
return FakeWMI()
116+
yield FakeWMI()
115117

116118

117119
def mock_enum_display_devices():

tests/test_windows.py

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import ctypes
2-
import screen_brightness_control as sbc
2+
from contextlib import contextmanager
33
from typing import Type
4-
from unittest.mock import Mock
4+
from unittest.mock import Mock, call
5+
56
import pytest
67
from pytest_mock import MockerFixture
7-
from unittest.mock import call
88

9-
from .helpers import BrightnessMethodTest
9+
import screen_brightness_control as sbc
1010
from screen_brightness_control.helpers import BrightnessMethod
11-
from .mocks.windows_mock import mock_enum_display_devices, mock_enum_display_monitors, mock_wmi_init, FakeWinDLL
11+
12+
from .helpers import BrightnessMethodTest
13+
from .mocks.windows_mock import (
14+
FakeWinDLL,
15+
mock_enum_display_devices,
16+
mock_enum_display_monitors,
17+
mock_wmi_init,
18+
)
1219

1320

1421
@pytest.fixture
@@ -52,27 +59,35 @@ def test_without(self):
5259
class TestSetBrightness(BrightnessMethodTest.TestSetBrightness):
5360
class TestDisplayKwarg(BrightnessMethodTest.TestSetBrightness.TestDisplayKwarg):
5461
def test_with(self, mocker: MockerFixture, freeze_display_info, method, subtests):
55-
wmi = sbc.windows._wmi_init()
56-
mocker.patch.object(sbc.windows, '_wmi_init', Mock(return_value=wmi, spec=True))
57-
brightness_method = wmi.WmiMonitorBrightnessMethods()[0]
58-
mocker.patch.object(wmi, 'WmiMonitorBrightnessMethods', lambda: [brightness_method] * 3)
59-
spy = mocker.spy(brightness_method, 'WmiSetBrightness')
60-
for index, display in enumerate(freeze_display_info):
61-
with subtests.test(index=index):
62-
method.set_brightness(100, display=index)
63-
spy.assert_called_once_with(100, 0)
64-
spy.reset_mock()
62+
with sbc.windows._wmi_init() as wmi:
63+
mocker.patch.object(
64+
sbc.windows,
65+
'_wmi_init',
66+
Mock(side_effect=contextmanager(lambda *_: (yield wmi)))
67+
)
68+
brightness_method = wmi.WmiMonitorBrightnessMethods()[0]
69+
mocker.patch.object(wmi, 'WmiMonitorBrightnessMethods', lambda: [brightness_method] * 3)
70+
spy = mocker.spy(brightness_method, 'WmiSetBrightness')
71+
for index, display in enumerate(freeze_display_info):
72+
with subtests.test(index=index):
73+
method.set_brightness(100, display=index)
74+
spy.assert_called_once_with(100, 0)
75+
spy.reset_mock()
6576

6677
def test_without(self, mocker: MockerFixture, freeze_display_info, method):
67-
wmi = sbc.windows._wmi_init()
68-
mocker.patch.object(sbc.windows, '_wmi_init', Mock(return_value=wmi, spec=True))
69-
brightness_method = wmi.WmiMonitorBrightnessMethods()[0]
70-
mocker.patch.object(wmi, 'WmiMonitorBrightnessMethods', lambda: [brightness_method] * 3)
71-
spy = mocker.spy(brightness_method, 'WmiSetBrightness')
72-
73-
method.set_brightness(100)
74-
spy.assert_has_calls([call(100, 0)] * 3)
75-
spy.reset_mock()
78+
with sbc.windows._wmi_init() as wmi:
79+
mocker.patch.object(
80+
sbc.windows,
81+
'_wmi_init',
82+
Mock(side_effect=contextmanager(lambda *_: (yield wmi)))
83+
)
84+
brightness_method = wmi.WmiMonitorBrightnessMethods()[0]
85+
mocker.patch.object(wmi, 'WmiMonitorBrightnessMethods', lambda: [brightness_method] * 3)
86+
spy = mocker.spy(brightness_method, 'WmiSetBrightness')
87+
88+
method.set_brightness(100)
89+
spy.assert_has_calls([call(100, 0)] * 3)
90+
spy.reset_mock()
7691

7792

7893
class TestVCP(BrightnessMethodTest):

0 commit comments

Comments
 (0)