自定义Rally Grid列与Rally数据列一起使用

时间:2013-11-10 06:47:00

标签: testing rally

我正在尝试创建一个应用程序,它将显示当前项目中的所有测试集及其通过/失败总计的状态。 我面临的问题(BTW刚开始学习ExtJS和Rally SDK昨天):
  - 我需要了解如何将当前选定的项目用作网格中的过滤器   - 如何查询测试集通过/失败总计,然后显示在网格的列中 - 例如:测试集123 | 45/70

1 个答案:

答案 0 :(得分:1)

这是一个使用project picker并按项目构建测试集网格的应用程序示例。另请参阅this post中的代码示例。 Web Services API中没有提交计算通过/失败总计的文件。您将不得不迭代结果并计算代码中的总计。我鼓励通过一些标准来限制测试用例结果的数量,例如:创立日期。在测试用例结果自动化的情况下,数据的绝对数量可能会有问题。

Ext.define('CustomApp', {
    extend: 'Rally.app.App',
    componentCls: 'app',

        launch: function() {
            var c = Ext.create('Ext.Container', {
                items: [
                    {
                    xtype: 'rallyprojectpicker',
                    fieldLabel: 'select project',
                        listeners:{
                            change: function(combobox){
                                if ( this.down('#g')) {
                                    console.log('grid exists');
                                    Ext.getCmp('g').destroy();
                                    console.log('grid deleted');
                                }
                                this.onProjectSelected(combobox.getSelectedRecord());
                            },
                            scope: this
                        }
                    },
                ],
            });
            this.add(c);
        },

        onProjectSelected:function(record){
            var project = record.data['_ref'];
            console.log('project', project);
            var testSetStore = Ext.create('Rally.data.WsapiDataStore', {
            model: 'TestSet',
            fetch: ['FormattedID','Name', 'Project', 'TestCaseStatus'],
            pageSize: 100,
            autoLoad: true,
            filters: [
        {
            property: 'Project',
            value: project
        }
        ],
            listeners: {
                load: this.onTestSetsLoaded,
                scope: this
            }
        }); 


        },

    onTestSetsLoaded:function(store, data){
                var testSets = [];
                Ext.Array.each(data, function(testset) {
                    var ts  = {
                        FormattedID: testset.get('FormattedID'),
                        _ref: testset.get("_ref"),  
                        Name: testset.get('Name'),
            TestCaseStatus: testset.get('TestCaseStatus')
                    };
                    testSets.push(ts);
                 });
                this.updateGrid(testSets);

    },


        updateGrid: function(testSets){
        var store = Ext.create('Rally.data.custom.Store', {
                data: testSets,
                pageSize: 100
            });
        if (!this.down('#g')) {
        this.createGrid(store);
        }
        else{
        this.down('#g').reconfigure(store);
        }
    },

        createGrid: function(store){
    console.log("load grid", store);

    var g = Ext.create('Rally.ui.grid.Grid', {
                id: 'g',
        store: store,

        columnCfgs: [
        {
                   text: 'Formatted ID', dataIndex: 'FormattedID', xtype: 'templatecolumn',
                    tpl: Ext.create('Rally.ui.renderer.template.FormattedIDTemplate')
                },
                {
                    text: 'Name', dataIndex: 'Name'
                },
        {
                    text: 'TestCaseStatus', dataIndex: 'TestCaseStatus'
                }
        ]
    });
    this.add(g);
   },
});

此示例的完整html源代码可从this repo

获得