feat: redesign workspaces and stabilize screeners
This commit is contained in:
@@ -99,6 +99,37 @@ class StrategyTrackingTests(unittest.TestCase):
|
||||
self.assertEqual(metrics["max_gain"], 10.0)
|
||||
self.assertEqual(metrics["max_drawdown"], -5.0)
|
||||
|
||||
def test_candidate_is_added_manually_and_can_be_removed_by_owner(self):
|
||||
run_id = self.database.save_screener_run(
|
||||
self.owner["id"],
|
||||
"20260711",
|
||||
"repair",
|
||||
"手动跟踪策略",
|
||||
{},
|
||||
{
|
||||
"meta": {},
|
||||
"candidates": [{
|
||||
"ts_code": "600000.SH",
|
||||
"code": "600000",
|
||||
"name": "浦发银行",
|
||||
"sector": "银行",
|
||||
"price": 12.5,
|
||||
}],
|
||||
},
|
||||
)
|
||||
result = self.service.add_candidate(self.owner["id"], run_id, "600000")
|
||||
self.assertEqual(result["added"], 1)
|
||||
tracks = self.database.list_strategy_tracks(self.owner["id"])
|
||||
self.assertEqual(len(tracks), 1)
|
||||
self.assertEqual(tracks[0]["code"], "600000")
|
||||
self.assertEqual(self.database.list_strategy_tracks(self.other["id"]), [])
|
||||
with self.assertRaises(ValueError):
|
||||
self.service.add_candidate(self.other["id"], run_id, "600000")
|
||||
|
||||
removed = self.service.remove_candidate(self.owner["id"], tracks[0]["id"])
|
||||
self.assertTrue(removed["deleted"])
|
||||
self.assertEqual(removed["tracking"]["batches"], [])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user