Skip to content

Commit ffe1ef8

Browse files
committed
mock datetime.now/fromtimestamp
1 parent e89b3e9 commit ffe1ef8

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

tests/conftest.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
from collections.abc import Iterator
44
from contextlib import closing, contextmanager
55
from csv import DictReader
6+
from datetime import datetime, tzinfo
67
from enum import Enum
78
from pathlib import Path
89
from sqlite3 import connect
10+
from zoneinfo import ZoneInfo
911

1012
import pytest
1113
from loguru import logger
@@ -85,6 +87,10 @@ def data(self) -> Iterator[bytes]:
8587
def time(self) -> Iterator[int]:
8688
return (msg.time for msg in self.value)
8789

90+
@property
91+
def tzinfo(self) -> tzinfo:
92+
return ZoneInfo("Europe/Oslo")
93+
8894
@property
8995
def obs(self) -> Iterator[ObsData]:
9096
sensor = self.sensor
@@ -184,16 +190,23 @@ def mock_sensor_check(self, buffer: bytes, command: str) -> bool:
184190
"""don't check if message matches sensor"""
185191
return True
186192

187-
captured_time = capture_data.time
193+
class mock_datetime(datetime):
194+
captured_time = capture_data.time
195+
196+
@classmethod
197+
def fromtimestamp(cls, t, tz=capture_data.tzinfo):
198+
assert tz == capture_data.tzinfo
199+
return datetime.fromtimestamp(t, tz)
188200

189-
def mock_sensor_now(self) -> int:
190-
"""mock pms.core.Sensor.now"""
191-
return next(captured_time)
201+
@classmethod
202+
def now(cls, tz=capture_data.tzinfo):
203+
return cls.fromtimestamp(next(cls.captured_time), tz)
192204

193205
monkeypatch.setattr("pms.core.reader.Serial", MockSerial)
194206
monkeypatch.setattr("pms.core.reader.SensorReader._cmd", mock_reader__cmd)
195207
monkeypatch.setattr("pms.core.reader.SensorReader._pre_heat", mock_reader__pre_heat)
196208
monkeypatch.setattr("pms.core.reader.Sensor.check", mock_sensor_check)
197-
monkeypatch.setattr("pms.core.reader.Sensor.now", mock_sensor_now)
209+
monkeypatch.setattr("pms.core.sensor.datetime", mock_datetime)
210+
monkeypatch.setattr("pms.sensors.base.datetime", mock_datetime)
198211

199212
return capture_data

0 commit comments

Comments
 (0)