import PlusOperateData from '../../src/operate/data';
import PlusBaseFunc from '../../src/base/func';


const dataItems = {
    "2004": "数据定义结构",
    "20041001": "示例父编码",
    "200410010001": "示例子项一",
    "200410010002": "示例子项二",
    "200410010003": "示例子项三",
    "20041002": "示例父2",
    "200410020001": "示例一",
    "200410020002": "示例二",
    "200410020003": "示例三"

};




interface ItestDataObject {

    field1?: string

    field2?: string

}



test('initDataItem ', () => {


    PlusOperateData.dataItem.initDataItem(dataItems);
    expect(PlusOperateData.dataItem.upValue('20041002')['200410020001']).toBe('示例一');
    expect(PlusOperateData.dataItem.upValue('20041002')['200410020001']).toBe('示例一');
    //DataBaseStep.finish();
});


test('upSystemVariable one ', () => {
    let sTestKey = "testkey";

    let aObject: any = PlusOperateData.systemVariable.upValue(sTestKey);

    aObject = PlusBaseFunc.objectNullDefault(aObject, {});

    aObject.field1 = "a";

    PlusOperateData.systemVariable.inValue(sTestKey, aObject);


    expect(PlusOperateData.systemVariable.upValue<any>(sTestKey).field1).toBe('a');

    //DataBaseStep.finish();
});



test('upSystemVariable multi field', () => {
    let sTestKey = "testkey";

    let aObject: ItestDataObject = PlusOperateData.systemVariable.upValue<ItestDataObject>(sTestKey);

    aObject = PlusBaseFunc.objectNullDefault(aObject, {});

    aObject.field2 = "b";

    PlusOperateData.systemVariable.inValue(sTestKey, aObject);

    let aNewField = PlusOperateData.systemVariable.upValue<ItestDataObject>(sTestKey);

    expect(aNewField.field1).toBe('a');

    expect(aNewField.field2).toBe('b');


});


test('upSystemVariable test new object update', () => {
    let sTestKey = "testkey";
    let aObject: ItestDataObject = { field2: "c" };
    PlusOperateData.systemVariable.inValue(sTestKey, aObject);

    let aNewField = PlusOperateData.systemVariable.upValue<ItestDataObject>(sTestKey);

    expect(aNewField.field1).toBe(undefined);

    expect(aNewField.field2).toBe('c');


});




test('systemVariable  ', () => {

    let oFormData={formCode:'testform',value:{"a":"bb"}};

    PlusOperateData.formData.inValue('',oFormData);


    let oDataList=PlusOperateData.formData.upFormData('testform1');

    //console.log(oDataList);

    //PlusOperateData.systemVariable.inValue('a', 'b');

});




/**
 * 该操作要放到最后  关闭数据库
 */
test('last close', () => {

    
    //关闭数据库
    PlusOperateData.systemVariable.warnTopRealm().dangerOperate(3);
});

