feat: update wallet punch point and report success
This commit is contained in:
85
suixinkanTests/PunchPointModelsTests.swift
Normal file
85
suixinkanTests/PunchPointModelsTests.swift
Normal file
@ -0,0 +1,85 @@
|
||||
//
|
||||
// PunchPointModelsTests.swift
|
||||
// suixinkanTests
|
||||
//
|
||||
|
||||
import XCTest
|
||||
@testable import suixinkan
|
||||
|
||||
/// 打卡点模型解码与格式化测试。
|
||||
final class PunchPointModelsTests: XCTestCase {
|
||||
func testListItemDecodesRegionImagesQRCodeAndAuditFields() throws {
|
||||
let json = """
|
||||
{
|
||||
"total": 1,
|
||||
"list": [{
|
||||
"id": "9001",
|
||||
"name": "湖边平台",
|
||||
"status": 1,
|
||||
"status_label": "运营中",
|
||||
"region": {"lat": 30.1, "lot": 120.2, "address": "湖边", "scenic_spot_str": "景区湖边"},
|
||||
"scenic_spot_str": "备用地址",
|
||||
"guide_imgs": ["https://cdn/1.jpg", "https://cdn/2.jpg"],
|
||||
"mp_qrcode": "https://cdn/qr.png",
|
||||
"created_at": "2026-07-08 10:00:00",
|
||||
"creator_id": "77",
|
||||
"creator": "张三",
|
||||
"creator_phone": "13800138000",
|
||||
"auditor": "李四",
|
||||
"audit_time": "2026-07-08 11:00:00",
|
||||
"audit_remark": "通过"
|
||||
}]
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
|
||||
let response = try JSONDecoder().decode(PunchPointListResponse.self, from: json)
|
||||
|
||||
XCTAssertEqual(response.total, 1)
|
||||
let item = try XCTUnwrap(response.list.first)
|
||||
XCTAssertEqual(item.id, 9001)
|
||||
XCTAssertEqual(item.statusLabel, "运营中")
|
||||
XCTAssertEqual(item.region?.lat, 30.1)
|
||||
XCTAssertEqual(item.region?.lot, 120.2)
|
||||
XCTAssertEqual(item.displayAddress, "湖边")
|
||||
XCTAssertEqual(item.guideImages.count, 2)
|
||||
XCTAssertEqual(item.mpQrcode, "https://cdn/qr.png")
|
||||
XCTAssertEqual(item.creatorId, 77)
|
||||
XCTAssertEqual(item.auditTime, "2026-07-08 11:00:00")
|
||||
XCTAssertEqual(PunchPointDisplayFormatter.maskedPhone(item.creatorPhone), "138****8000")
|
||||
}
|
||||
|
||||
func testDetailDecodesDefaultsAndCoordinateFallbacks() throws {
|
||||
let json = """
|
||||
{
|
||||
"id": 12,
|
||||
"name": "入口",
|
||||
"status": 3,
|
||||
"region": {"lat": 31.2, "lot": 121.3, "address": ""},
|
||||
"scenic_spot_str": "景区入口",
|
||||
"description": "集合点"
|
||||
}
|
||||
""".data(using: .utf8)!
|
||||
|
||||
let detail = try JSONDecoder().decode(PunchPointDetail.self, from: json)
|
||||
|
||||
XCTAssertEqual(detail.statusLabel, "")
|
||||
XCTAssertEqual(detail.guideImages, [])
|
||||
XCTAssertNil(detail.mpQrcode)
|
||||
XCTAssertEqual(detail.displayAddress, "景区入口")
|
||||
XCTAssertEqual(detail.coordinate?.latitude, 31.2)
|
||||
XCTAssertEqual(detail.coordinate?.longitude, 121.3)
|
||||
XCTAssertEqual(detail.description, "集合点")
|
||||
XCTAssertEqual(PunchPointFilterType.rejected.apiStatus, 4)
|
||||
XCTAssertEqual(PunchPointFilterType.pendingReview.title, "未审核")
|
||||
}
|
||||
|
||||
func testImageRemoteStateUsesURLAndUploadedFlag() {
|
||||
let image = PunchPointImageState.remote(url: "https://cdn.example.com/path/a.jpg")
|
||||
|
||||
XCTAssertEqual(image.fileName, "a.jpg")
|
||||
XCTAssertEqual(image.previewURL, "https://cdn.example.com/path/a.jpg")
|
||||
XCTAssertEqual(image.uploadedURL, "https://cdn.example.com/path/a.jpg")
|
||||
XCTAssertTrue(image.isUploaded)
|
||||
XCTAssertFalse(image.isUploading)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user