refactor: 确立独立子工程架构 (backend, admin, mpuniapp) 并同步更新 AGENTS.md 规范
这个提交包含在:
@@ -0,0 +1,57 @@
|
||||
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
||||
const isMP = platformInfo.startsWith('mp')
|
||||
const isWeb = platformInfo.startsWith('web')
|
||||
const isHarmony = platformInfo.startsWith('harmony')
|
||||
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
|
||||
const isIOS = platformInfo.startsWith('ios')
|
||||
|
||||
const PAGE_PATH = "/pages/API/provider/provider";
|
||||
|
||||
describe("provider", () => {
|
||||
if (isMP || isWeb || isAppWebView) {
|
||||
it('not support', () => {
|
||||
expect(1).toBe(1)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
beforeAll(async () => {
|
||||
page = await program.reLaunch(PAGE_PATH)
|
||||
await page.waitFor(600)
|
||||
});
|
||||
it("test getprovider", async () => {
|
||||
await page.callMethod('getProvider');
|
||||
await page.waitFor(1000);
|
||||
let providerIds = await page.data('data.providerIds')
|
||||
|
||||
expect(providerIds).toEqual(expect.arrayContaining(['wxpay', 'alipay', 'system', 'weixin']))
|
||||
if (!isHarmony) {
|
||||
expect(providerIds).toEqual(expect.arrayContaining(['tencent']))
|
||||
} else {
|
||||
expect(providerIds).toEqual(expect.arrayContaining(['huawei']))
|
||||
}
|
||||
|
||||
if (isIOS) {
|
||||
expect(providerIds).toEqual(expect.arrayContaining(['apple']))
|
||||
expect(providerIds).toHaveLength(7)
|
||||
} else {
|
||||
expect(providerIds).toHaveLength(6)
|
||||
}
|
||||
|
||||
let providerObjects = await page.data('data.providerObjects')
|
||||
|
||||
expect(providerObjects).toEqual(expect.arrayContaining(['微信支付', '支付宝', '系统定位', '微信登录', '微信分享']))
|
||||
if (!isHarmony) {
|
||||
expect(providerObjects).toEqual(expect.arrayContaining(['腾讯定位']))
|
||||
} else {
|
||||
expect(providerObjects).toEqual(expect.arrayContaining(['华为登录']))
|
||||
}
|
||||
|
||||
if (isIOS) {
|
||||
expect(providerObjects).toEqual(expect.arrayContaining(['苹果登录']))
|
||||
expect(providerObjects).toHaveLength(7)
|
||||
} else {
|
||||
expect(providerObjects).toHaveLength(6)
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,111 @@
|
||||
<template>
|
||||
<!-- #ifdef APP -->
|
||||
<scroll-view class="page-scroll-view">
|
||||
<!-- #endif -->
|
||||
<view class="page">
|
||||
<page-head :title="data.title"></page-head>
|
||||
<view class="service-item" v-for="(item, index) in data.serviceList" :key="index">
|
||||
<text class="service-name">{{item.name}}:</text>
|
||||
<view class="provider-list">
|
||||
<text class="provider-item" v-for="(item2, index2) in item.provider" :key="index2">
|
||||
{{item2}}
|
||||
{{item.providerObj.length > 0 ? ':' + JSON.stringify(item.providerObj[index2]) : '' }}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<button class="btn-get-provider" type="primary" @click="getProvider">getProviderSync</button>
|
||||
</view>
|
||||
<!-- #ifdef APP -->
|
||||
</scroll-view>
|
||||
<!-- #endif -->
|
||||
</template>
|
||||
|
||||
<script setup lang="uts">
|
||||
type ProviderItem = {
|
||||
service : string,
|
||||
name : string,
|
||||
provider : string[],
|
||||
providerObj : UniProvider[]
|
||||
}
|
||||
|
||||
type DataType = {
|
||||
title: string;
|
||||
flag: boolean;
|
||||
serviceList: ProviderItem[];
|
||||
providerIds: string[];
|
||||
providerObjects: string[];
|
||||
}
|
||||
|
||||
const data = reactive({
|
||||
title: 'provider',
|
||||
flag: false,
|
||||
serviceList: [
|
||||
{ service: "payment", name: "支付", provider: [], providerObj: [] },
|
||||
{ service: "location", name: "定位", provider: [], providerObj: [] },
|
||||
{ service: "oauth", name: "登录", provider: [], providerObj: [] },
|
||||
{ service: "share", name: "分享", provider: [], providerObj: [] }
|
||||
],
|
||||
//自动化测试使用
|
||||
providerIds: [],
|
||||
providerObjects: [],
|
||||
} as DataType)
|
||||
|
||||
const updateProvider = (service : string, provider : string[] | null, uniProvider : UniProvider[]) => {
|
||||
//这里需要从新从serviceList 获取item,不能直接用forEach 里面的item,目前存在bug,后续会解决这个问题
|
||||
const item : ProviderItem | null = data.serviceList.find((item : ProviderItem) : boolean => {
|
||||
return item.service == service
|
||||
});
|
||||
|
||||
if (item != null && provider != null) {
|
||||
item.provider = provider
|
||||
item.providerObj = uniProvider
|
||||
item.providerObj.forEach((obj) => {
|
||||
data.providerObjects.push(obj.description)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const getProvider = () => {
|
||||
data.providerObjects = []
|
||||
data.serviceList.forEach((item : ProviderItem) => {
|
||||
var provider = uni.getProviderSync({
|
||||
service: item.service,
|
||||
} as GetProviderSyncOptions)
|
||||
provider.providerIds.forEach((value) => {
|
||||
data.providerIds.push(value)
|
||||
})
|
||||
updateProvider(item.service, provider.providerIds, provider.providerObjects);
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
data,
|
||||
getProvider
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.page {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.service-item {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.service-name {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.provider-list {
|
||||
margin-left: 32px;
|
||||
}
|
||||
|
||||
.provider-item {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.btn-get-provider {
|
||||
margin-top: 30px;
|
||||
}
|
||||
</style>
|
||||
在新工单中引用
屏蔽一个用户