class DivNew(base.AbstractTable[events.TradingDayEnded]): """Таблица с ожидаемыми дивидендами. Данные забираются со https://www.smart-lab.ru по российским акциям и с https://www.moex.com/ по иностранным. Создает события с новыми дивидендами. """ group: ClassVar[ports.GroupName] = ports.DIV_NEW _gateways: Final = ( smart_lab.SmartLabGateway(), moex_status.MOEXStatusGateway(), ) def _update_cond(self, event: events.TradingDayEnded) -> bool: """Если торговый день окончился, всегда обновление.""" return True async def _prepare_df(self, event: events.TradingDayEnded) -> pd.DataFrame: """Загружает новый DataFrame полностью.""" dfs = [await gw() for gw in self._gateways] return pd.concat(dfs, axis=0) def _validate_new_df(self, df_new: pd.DataFrame) -> None: """Нет проверок.""" def _new_events( self, event: events.TradingDayEnded) -> list[domain.AbstractEvent]: """Порождает команды обновить дивиденды.""" return []
async def test_conomy_gateway(mocker, df_patch, df_res): """Проверка нижних ячеек и отбрасывание предварительных данных.""" mocker.patch.object(parser, "get_df_from_url", return_value=df_patch) loader = smart_lab.SmartLabGateway() pd.testing.assert_frame_equal(await loader.__call__(), df_res)