| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- """
- Swagger 模块 4(小区)— 真实联调
- 使用 backend/.env 的 QIWEI_ROOM_IDS 绑定真实企微群。
- 覆盖 api-docs 中 9 个接口。
- """
- from __future__ import annotations
- import uuid
- import pytest
- from load_env import load_backend_env
- pytestmark = [pytest.mark.integration, pytest.mark.qiwei_live]
- @pytest.fixture(scope="module")
- def live_community_ctx(api_session, live_guid, live_room_ids):
- """创建小区 → 绑定真实 roomId → 结束后清理"""
- suffix = uuid.uuid4().hex[:8]
- room_id = live_room_ids[0]
- api_session.assert_success(
- api_session.post(
- "/rooms/sync",
- json={"guid": live_guid, "roomIdList": live_room_ids},
- )
- )
- community = api_session.assert_success(
- api_session.post(
- "/communities",
- json={
- "name": f"联调小区_{suffix}",
- "totalHouseholds": 500,
- "avgPrice": 30000,
- "deliveryYear": 2020,
- "storeId": 1,
- "address": f"联调路{suffix}号",
- },
- ),
- status=201,
- )
- cid = community["id"]
- binding = api_session.assert_success(
- api_session.post(
- "/community-room-bindings",
- json={"communityId": cid, "roomId": room_id, "storeId": 1},
- ),
- status=201,
- )
- ctx = {
- "community_id": cid,
- "community_name": community["name"],
- "binding_id": binding["id"],
- "room_id": room_id,
- "room_ids": live_room_ids,
- }
- yield ctx
- api_session.assert_success(
- api_session.delete(f"/community-room-bindings/{binding['id']}")
- )
- api_session.assert_success(api_session.delete(f"/communities/{cid}"))
- def test_m04_create_community(live_community_ctx):
- assert live_community_ctx["community_id"] > 0
- def test_m04_list_communities(api, live_community_ctx):
- listed = api.assert_success(api.get("/communities"))
- assert any(c["id"] == live_community_ctx["community_id"] for c in listed)
- def test_m04_community_detail(api, live_community_ctx):
- detail = api.assert_success(
- api.get(f"/communities/{live_community_ctx['community_id']}")
- )
- assert detail["name"] == live_community_ctx["community_name"]
- def test_m04_bind_real_room(api, live_community_ctx):
- assert live_community_ctx["room_id"] in live_community_ctx["room_ids"]
- def test_m04_binding_list(api, live_community_ctx):
- bindings = api.assert_success(api.get("/community-room-bindings"))
- assert any(b["id"] == live_community_ctx["binding_id"] for b in bindings)
- hit = next(b for b in bindings if b["id"] == live_community_ctx["binding_id"])
- assert hit["roomId"] == live_community_ctx["room_id"]
- def test_m04_binding_by_room(api, live_community_ctx):
- by_room = api.assert_success(
- api.get(f"/community-room-bindings/by-room/{live_community_ctx['room_id']}")
- )
- assert by_room["communityId"] == live_community_ctx["community_id"]
- assert by_room["roomId"] == live_community_ctx["room_id"]
- def test_m04_update_community(api, live_community_ctx):
- updated = api.assert_success(
- api.put(
- f"/communities/{live_community_ctx['community_id']}",
- json={"remark": "真实联调备注"},
- )
- )
- assert updated["remark"] == "真实联调备注"
- def test_m04_second_room_binding_optional(api, live_guid, live_community_ctx):
- """若配置了多个 QIWEI_ROOM_IDS,第二个群也可绑定同一小区"""
- if len(live_community_ctx["room_ids"]) < 2:
- pytest.skip("仅配置了一个 QIWEI_ROOM_IDS")
- room2 = live_community_ctx["room_ids"][1]
- b2 = api.assert_success(
- api.post(
- "/community-room-bindings",
- json={
- "communityId": live_community_ctx["community_id"],
- "roomId": room2,
- "storeId": 1,
- },
- ),
- status=201,
- )
- assert b2["roomId"] == room2
- api.assert_success(api.delete(f"/community-room-bindings/{b2['id']}"))
|