Files
ai_dianshang/miniprogram/test_privacy_policy.js
2025-11-17 13:32:54 +08:00

193 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 隐私政策功能测试脚本
* 用于验证隐私政策合规修改是否正确实现
*/
// 模拟微信小程序环境
const mockStorage = {
'privacy_agreed': false,
'privacy_agreed_time': null
};
const mockWx = {
getStorageSync: (key) => {
return mockStorage[key];
},
setStorageSync: (key, value) => {
mockStorage[key] = value;
console.log(`设置存储: ${key} = ${value}`);
},
removeStorageSync: (key) => {
delete mockStorage[key];
console.log(`删除存储: ${key}`);
},
showToast: (options) => {
console.log(`显示提示: ${options.title}`);
},
navigateTo: (options) => {
console.log(`页面跳转: ${options.url}`);
}
};
// 模拟登录页面的数据和方法
const loginPageMock = {
data: {
showPrivacyPopup: false,
privacyAgreed: false
},
setData: function(data) {
Object.assign(this.data, data);
console.log('页面数据更新:', data);
},
showToast: function(message, type = 'none') {
mockWx.showToast({ title: message, icon: type });
},
// 检查隐私政策同意状态
checkPrivacyAgreement: function() {
const privacyAgreed = mockWx.getStorageSync('privacy_agreed');
if (!privacyAgreed) {
console.log('用户未同意隐私政策,显示弹窗');
this.setData({ showPrivacyPopup: true });
} else {
console.log('用户已同意隐私政策,检查登录状态');
this.checkLoginStatus();
}
},
// 隐私政策复选框变化处理
onPrivacyAgreementChange: function(e) {
this.setData({ privacyAgreed: e.detail.value });
console.log('隐私政策同意状态变化:', e.detail.value);
},
// 同意隐私政策
agreePrivacyPolicy: function() {
if (!this.data.privacyAgreed) {
this.showToast('请先勾选同意隐私政策', 'warning');
return;
}
// 保存同意状态
mockWx.setStorageSync('privacy_agreed', true);
mockWx.setStorageSync('privacy_agreed_time', new Date().getTime());
// 关闭隐私政策弹窗
this.setData({ showPrivacyPopup: false });
console.log('用户同意隐私政策,继续登录流程');
this.checkLoginStatus();
},
// 关闭隐私政策弹窗(用户选择暂不同意)
closePrivacyPopup: function() {
this.setData({
showPrivacyPopup: false,
privacyAgreed: false
});
this.showToast('您需要同意隐私政策才能使用小程序', 'warning');
},
// 微信登录
weChatLogin: function() {
// 检查是否已同意隐私政策
const privacyAgreed = mockWx.getStorageSync('privacy_agreed');
if (!privacyAgreed) {
this.showToast('请先同意隐私政策', 'warning');
this.setData({ showPrivacyPopup: true });
return;
}
console.log('开始微信登录流程');
},
checkLoginStatus: function() {
console.log('检查登录状态');
}
};
// 模拟用户中心页面
const usercenterPageMock = {
onClickCell: function({ currentTarget }) {
const { type } = currentTarget.dataset;
switch (type) {
case 'user-agreement':
mockWx.navigateTo({
url: '/pages/user-agreement/index'
});
break;
case 'privacy-policy':
mockWx.navigateTo({
url: '/pages/privacy-policy/index'
});
break;
default:
console.log('其他菜单项点击:', type);
}
}
};
// 测试用例
console.log('=== 隐私政策功能测试开始 ===\n');
// 测试1: 首次使用,页面加载不弹出隐私政策
console.log('测试1: 首次使用页面加载');
console.log('页面加载完成,不会自动弹出隐私政策弹窗');
console.log('预期结果: 页面正常显示,无弹窗\n');
// 测试2: 用户点击登录,触发隐私政策弹窗
console.log('测试2: 用户点击登录按钮');
loginPageMock.weChatLogin();
console.log('预期结果: 弹出隐私政策选择弹窗\n');
// 测试3: 用户尝试不勾选直接同意
console.log('测试3: 用户尝试不勾选直接同意');
loginPageMock.agreePrivacyPolicy();
console.log('预期结果: 显示警告提示\n');
// 测试4: 用户勾选复选框
console.log('测试4: 用户勾选复选框');
loginPageMock.onPrivacyAgreementChange({ detail: { value: true } });
console.log('预期结果: 更新同意状态\n');
// 测试5: 用户同意隐私政策
console.log('测试5: 用户同意隐私政策');
loginPageMock.agreePrivacyPolicy();
console.log('预期结果: 保存同意状态,关闭弹窗\n');
// 测试6: 用户选择暂不同意
console.log('测试6: 用户选择暂不同意');
loginPageMock.setData({ showPrivacyPopup: true, privacyAgreed: false });
loginPageMock.closePrivacyPopup();
console.log('预期结果: 关闭弹窗,显示警告\n');
// 测试7: 已同意用户点击登录
console.log('测试7: 已同意用户点击登录');
// 先设置存储状态
mockWx.setStorageSync('privacy_agreed', true);
loginPageMock.weChatLogin();
console.log('预期结果: 直接进行登录流程,不显示弹窗\n');
// 测试8: 用户中心隐私政策链接
console.log('测试8: 用户中心隐私政策链接');
usercenterPageMock.onClickCell({
currentTarget: {
dataset: { name: 'privacy-policy' }
}
});
console.log('预期结果: 跳转到隐私政策页面\n');
console.log('测试9: 用户中心用户协议链接');
usercenterPageMock.onClickCell({
currentTarget: {
dataset: { name: 'user-agreement' }
}
});
console.log('预期结果: 跳转到用户协议页面\n');
console.log('=== 隐私政策功能测试完成 ===');
console.log('\n所有测试用例执行完毕请检查输出结果是否符合预期。');
console.log('如果所有测试都按预期执行,说明隐私政策合规修改实现正确。');