it()

in spec/integrated/vnext-spec/grid-view-api-spec.js [253:363]


  it('verify body rows function for gridView', function () {
    let gridConfig = {
      el: '#container',
      dataSource: {
        type: 'memory',
        data: memoryData,
        primaryKey: 'UserName',
      },
    };
    gridView = pgridFactory
      .create(gridConfig)
      .gridView;

    return new Promise(resolve => gridView.render(resolve))
      .then(() => driver.once(gridView, 'didUpdate'))
      .then(() => {
        expect(gridView.getBodyRows()[0]).to.be.equal('data-rows');
        return null;
      })
      .then(() => {
        gridView.setBodyRows([
          {
            type: 'data-rows',
            classes: {
              male: row => row.Gender === 'Male',
              female: row => row.Gender === 'Female',
            },
          },
        ]);
        return driver.once(gridView, 'didUpdate');
      })
      .then(() => {
        return driver.element('.table-container table tbody tr[data-key]');
      })
      .then(result => {
        util.validateClassesForElementArray([result.eq(0), result.eq(4), result.eq(9)], ['male']);
        util.validateClassesForElementArray([result.eq(10), result.eq(13), result.eq(15)], ['female']);
        return null;
      })
      .then(() => {
        gridView.prependBodyRows([
          {
            item: { UserName: 'prepend item' },
            classes: ['prepend-body-row'],
          },
        ]);
        gridView.appendBodyRows([
          {
            item: { UserName: 'append item' },
            classes: ['append-body-row'],
          },
        ]);
        return driver.once(gridView, 'didUpdate');
      })
      .then(() => {
        return Promise.all([
          driver.element('.prepend-body-row td:nth-child(1) span'),
          driver.element('.append-body-row td:nth-child(1) span'),
        ]);
      })
      .then(result => {
        expect(result[0].text()).to.be.equal('prepend item');
        expect(result[1].text()).to.be.equal('append item');
        return null;
      })
      .then(() => {
        gridView.setFootRows([
          {
            html: '<div>foot row html</div>',
            classes: ['foot-row'],
          },
        ]);
        return driver.once(gridView, 'didUpdate');
      })
      .then(() => {
        return driver.element('.footer > .foot-row > td > div');
      })
      .then(result => {
        expect(result.length).to.be.equal(1);
        expect(result.text()).to.be.equal('foot row html');
        expect(gridView.getFootRows()[0].html).to.be.equal('<div>foot row html</div>');
        return null;
      })
      .then(() => {
        gridView.prependFootRows([
          {
            item: { UserName: 'prepend foot' },
            classes: ['prepend-foot-row'],
          },
        ]);
        gridView.appendFootRows([
          {
            item: { UserName: 'append foot' },
            classes: ['append-foot-row'],
          },
        ]);
        return driver.once(gridView, 'didUpdate');
      })
      .then(() => {
        return Promise.all([
          driver.element('.footer > .prepend-foot-row > td > span'),
          driver.element('.footer > .append-foot-row > td > span'),
        ]);
      })
      .then(result => {
        expect(result[0].text()).to.be.equal('prepend foot');
        expect(result[1].text()).to.be.equal('append foot');
        return null;
      })
      .tapCatch(console.log);
  });