const valueTypeDefaultMap = new Map([
['String', 'hello'],
['Number', '1'],
['Boolean', 'true'],
['Object', '{"name": "张三","age": 12}'],
['Array', '[1, "hello", true, { "key": "value" }]']
])
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isMP = platformInfo.startsWith('mp')
const isWeb = platformInfo.startsWith('web')
const isIos = platformInfo.startsWith('ios')
describe('Storage管理器页面-多类型新增', () => {
if (isIos) {
it('skip not support', () => {
expect(1).toBe(1)
})
return
}
let page
beforeAll(async () => {
page = await program.navigateTo('/pages/API/storage/storagemanage')
await page.callMethod('setTestMode', true)
await page.waitFor(500)
const list = await page.callMethod('getStorageList')
if (list.length) {
const clearBtn = await page.$('.btn-clear')
await clearBtn.tap()
await page.waitFor(300)
}
})
afterAll(async () => {
await page.callMethod('setTestMode', false)
})
it('1. 新增String类型', async () => {
const createBtn = await page.$('.btn-create')
await createBtn.tap()
await page.waitFor(300)
const mask = await page.$('.dialog-mask')
const keyInput = await mask.$('.edit-input')
const valueTextarea = await mask.$('.edit-textarea')
const saveBtn = await mask.$('.btn-save')
await keyInput.input('test_string')
await valueTextarea.input('hello world')
await saveBtn.tap()
await page.waitFor(300)
const list = await page.callMethod('getStorageList')
expect(list.length).toBe(1)
if (!isMP) {
expect(list[0].key).toBe('test_string')
expect(list[0].value).toBe('hello world')
}
})
it('2. 编辑String类型', async () => {
const editBtn = await page.$('.btn-edit')
await editBtn.tap()
await page.waitFor(300)
const mask = await page.$('.dialog-mask')
const keyInput = await mask.$('.edit-input')
const valueTextarea = await mask.$('.edit-textarea')
const saveBtn = await mask.$('.btn-save')
await keyInput.input('test_string_edited')
await valueTextarea.input('hello world edited')
await saveBtn.tap()
await page.waitFor(300)
const list = await page.callMethod('getStorageList')
if (!isMP) {
expect(list[0].key).toBe('test_string_edited')
expect(list[0].value).toBe('hello world edited')
}
})
it('3. 删除String类型', async () => {
const listView = await page.$('.list-view')
const listItems = await listView.$$('list-item')
await listItems[0].tap()
await page.waitFor(300)
const deleteBtn = await page.$('.btn-delete')
await deleteBtn.tap()
await page.waitFor(300)
const list = await page.callMethod('getStorageList')
expect(list.length).toBe(0)
})
it('4. 测试切换类型自动填充默认值', async () => {
const createBtn = await page.$('.btn-create')
await createBtn.tap()
await page.waitFor(300)
const mask = await page.$('.dialog-mask')
const typeItems = await mask.$$('.edit-type-radio')
for (let i = 0; i < typeItems.length; i++) {
await typeItems[i].tap()
await page.waitFor(200)
const editValue = await page.data('editValue')
const editValueType = await page.data('editValueType')
if (isWeb && editValueType._value != 'String') {
expect(editValue._value).toBe(valueTypeDefaultMap.get(editValueType._value))
}
}
const cancelBtn = await mask.$('.btn-cancel')
await cancelBtn.tap()
await page.waitFor(300)
})
it('5. 新增所有类型', async () => {
const types = ['String', 'Number', 'Boolean', 'Object', 'Array']
for (const type of types) {
const createBtn = await page.$('.btn-create')
await createBtn.tap()
await page.waitFor(300)
const mask = await page.$('.dialog-mask')
const keyInput = await mask.$('.edit-input')
const valueTextarea = await mask.$('.edit-textarea')
const saveBtn = await mask.$('.btn-save')
const typeRadios = await mask.$$('.edit-type-radio')
const typeIndex = types.indexOf(type)
await typeRadios[typeIndex].tap()
await page.waitFor(100)
await keyInput.input(`test_${type.toLowerCase()}`)
await valueTextarea.input(valueTypeDefaultMap.get(type))
await saveBtn.tap()
await page.waitFor(300)
}
const list = await page.callMethod('getStorageList')
if (!isMP) {
expect(list.length).toBe(types.length)
}
})
it('6. 清空所有存储项', async () => {
const clearBtn = await page.$('.btn-clear')
await clearBtn.tap()
await page.waitFor(300)
const list = await page.callMethod('getStorageList')
expect(list.length).toBe(0)
})
})