使用TestFolders和TestCase层次结构的网格

时间:2014-01-21 14:47:12

标签: extjs rally

我需要一个应用程序,其中我的测试用例由TestFolders显示,遵循testFolders层次结构。例如:

TestFolder1
- SubTestFolder1.1
-- TestCase111
-- TestCase112
-- TestCase113
- SubTestFolder1.2
-- TestCase121
-- TestCase222
TestFolder2
-- TestCase21
-- TestCase22

使用可扩展的TestFolders ...我确实找到了UserStories的一些例子,但它不适用,因为它使用特定的对象作为rallyuserstorytree,我明白我应该构建自己的树模型?但我是拉力赛的初学者,我真的不明白该怎么做。内联帮助没有这样的例子...

这给了我一个空白页面,我的回调从未被加载,并且它导致错误“Uncaught TypeError:无法读取未定义的属性'长度',我不明白......

var myTreeStore = Ext.create('Rally.data.wsapi.TreeStore', {
    model : 'TestFolder',
    listeners: {
        load: function(store, data, success){
            console.log('  in load calback');
            //process data
        },
        scope: this,
    },
    autoLoad : true,
    fetch: [ 'FormattedID', 'TestCases' ,'Description'],
    limit: records_nbr,
    remoteSort : true ,
    sorters: ['FormattedID'],
    pagesize: records_nbr,
    autoLoad: true, 
});

我尝试了另一种方式,这个代码例如:

_createTree: function(){
    var me = this ;
    var myTree = Ext.create('Ext.Container', {
        itemID: 'myTree',
        items: [{
            xtype: 'rallytree',
            topLevelModel: 'TestFolder',
            childModelTypeForRecordFn: function(record){
                if(record.get('Children') && record.get('Children').length > 0){
                    return 'TestCase';
                } else {
                    return 'TestFolder';
                }
            },
            givenAParentRecordWhatIsTheAttributeConnectingAChildToThisParentFn: function(record){
                if(record.get('Children') && record.get('Children').length > 0){
                    return 'Parent';
                } else {
                    return 'WorkProduct';
                }
            },
            canExpandFn: function(record){
                return true;
            }
        }
    ],
    renderTo: Ext.getBody().dom,
    });
    this.add(myTree);
},

但它只显示顶级TestFolders而无法扩展它们。我在哪里可以找到在层次结构网格中显示TestFolders和TestCases的应用程序的例子?

2 个答案:

答案 0 :(得分:1)

回答自己...

第二个示例基于您在SDK源代码中找到的示例(https://rally1.rallydev.com/apps/2.0rc2/sdk-debug.js)。但是sdk被窃听或示例错误,因为它检查

if(record.get('Children') && record.get('Children').length > 0){

并且无论TestFolder是否为空,Children属性始终为空字符串。对于一个给定的对象,没有办法知道它是否有孩子,或者只是在抚摸他的属性。

如果我用

之类的东西替换上一行
if(record.get('_type') === 'testfolder'){

它有效,但我仍然没有看到TestCases,因为对于给定的TestFolder对象,如果附加了测试用例,我无法知道查看其属性...对于“Children”属性,{{ 1}} property也总是一个空字符串。另一个错误?我没有找到向RallyDev提交错误的方法: - (

答案 1 :(得分:1)

2.0rc2中包含的Rally.data.wsapi.TreeStore仍然非常原始。我们目前正致力于更好地支持分层网格数据。您上面发布的示例很可能是与WSAPI版本1.x一起使用的,它仍然可以在一个请求中检索子集合。 2.0rc2强制使用WSAPI 2.x,它返回一个集合摘要对象(并需要一个额外的填充请求)。

以下内容应该更适合您:

record.get('TestCases') && record.get('TestCases').Count > 0