forked from xiongyuxing/tiku-backend.net
feat: add tenant points and coupon operations
This commit is contained in:
@@ -135,6 +135,58 @@ public sealed class TenantCommerceEndpointTests
|
||||
item.SourceType == "activation_code");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Admin_can_manage_points_and_coupons()
|
||||
{
|
||||
await using var factory = new ApiTestFactory(paymentProviderGateway: new FakePaymentGateway());
|
||||
var seed = await SeedLoginUserAsync(factory, TenantRole.TenantAdmin);
|
||||
using var client = factory.CreateClient();
|
||||
await LoginAsync(client, seed);
|
||||
|
||||
var taskResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-commerce/point-activity-tasks",
|
||||
new UpsertPointTaskDto
|
||||
{
|
||||
TaskKey = "admin_daily",
|
||||
Title = "后台每日任务",
|
||||
TaskType = PointActivityTaskType.DailyLogin,
|
||||
Points = 10,
|
||||
MaxClaimsPerUser = 1
|
||||
});
|
||||
var tasksResponse = await client.GetAsync("/api/tenant-commerce/point-activity-tasks");
|
||||
var exchangeItemResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-commerce/point-exchange-items",
|
||||
new UpsertPointExchangeItemDto
|
||||
{
|
||||
ItemKey = "admin_svip_7d",
|
||||
Name = "后台 SVIP 7 天",
|
||||
ItemType = PointExchangeItemType.Entitlement,
|
||||
PointsCost = 30,
|
||||
Days = 7,
|
||||
Stock = 10
|
||||
});
|
||||
var exchangeItemsResponse = await client.GetAsync("/api/tenant-commerce/point-exchange-items");
|
||||
var couponResponse = await client.PutAsJsonAsync(
|
||||
"/api/tenant-commerce/coupons",
|
||||
new UpsertTenantCouponDto
|
||||
{
|
||||
Code = "ADMIN10",
|
||||
DiscountType = DiscountType.Fixed,
|
||||
DiscountValue = 10,
|
||||
MaxUses = 100
|
||||
});
|
||||
var couponsResponse = await client.GetAsync("/api/tenant-commerce/coupons");
|
||||
var reportResponse = await client.GetAsync("/api/tenant-commerce/coupons/report");
|
||||
|
||||
Assert.Equal(HttpStatusCode.OK, taskResponse.StatusCode);
|
||||
Assert.Contains("admin_daily", await tasksResponse.Content.ReadAsStringAsync(), StringComparison.OrdinalIgnoreCase);
|
||||
Assert.Equal(HttpStatusCode.OK, exchangeItemResponse.StatusCode);
|
||||
Assert.Contains("admin_svip_7d", await exchangeItemsResponse.Content.ReadAsStringAsync(), StringComparison.OrdinalIgnoreCase);
|
||||
Assert.Equal(HttpStatusCode.OK, couponResponse.StatusCode);
|
||||
Assert.Contains("ADMIN10", await couponsResponse.Content.ReadAsStringAsync(), StringComparison.OrdinalIgnoreCase);
|
||||
Assert.Equal(HttpStatusCode.OK, reportResponse.StatusCode);
|
||||
}
|
||||
|
||||
private static async Task<LoginSeed> SeedLoginUserAsync(ApiTestFactory factory, TenantRole role)
|
||||
{
|
||||
var tenantId = Guid.NewGuid();
|
||||
|
||||
Reference in New Issue
Block a user