193 lines
5.7 KiB
JavaScript
193 lines
5.7 KiB
JavaScript
|
|
/**
|
|||
|
|
* 隐私政策功能测试脚本
|
|||
|
|
* 用于验证隐私政策合规修改是否正确实现
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
// 模拟微信小程序环境
|
|||
|
|
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('如果所有测试都按预期执行,说明隐私政策合规修改实现正确。');
|