github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/ui/tests/integration/components/lifecycle-chart-test.js (about)

     1  import { module, test } from 'qunit';
     2  import { setupRenderingTest } from 'ember-qunit';
     3  import { render, settled } from '@ember/test-helpers';
     4  import hbs from 'htmlbars-inline-precompile';
     5  import { create } from 'ember-cli-page-object';
     6  import LifecycleChart from 'nomad-ui/tests/pages/components/lifecycle-chart';
     7  
     8  const Chart = create(LifecycleChart);
     9  
    10  const tasks = [
    11    {
    12      lifecycleName: 'main',
    13      name: 'main two',
    14    },
    15    {
    16      lifecycleName: 'main',
    17      name: 'main one',
    18    },
    19    {
    20      lifecycleName: 'prestart',
    21      name: 'prestart',
    22    },
    23    {
    24      lifecycleName: 'sidecar',
    25      name: 'sidecar',
    26    },
    27  ];
    28  
    29  module('Integration | Component | lifecycle-chart', function(hooks) {
    30    setupRenderingTest(hooks);
    31  
    32    test('it renders stateless phases and lifecycle- and name-sorted tasks', async function(assert) {
    33      this.set('tasks', tasks);
    34  
    35      await render(hbs`{{lifecycle-chart tasks=tasks}}`);
    36      assert.ok(Chart.isPresent);
    37  
    38      assert.equal(Chart.phases[0].name, 'Prestart');
    39      assert.equal(Chart.phases[1].name, 'Main');
    40  
    41      Chart.phases.forEach(phase => assert.notOk(phase.isActive));
    42  
    43      assert.deepEqual(Chart.tasks.mapBy('name'), ['prestart', 'sidecar', 'main one', 'main two']);
    44      assert.deepEqual(Chart.tasks.mapBy('lifecycle'), [
    45        'Prestart Task',
    46        'Sidecar Task',
    47        'Main Task',
    48        'Main Task',
    49      ]);
    50  
    51      assert.ok(Chart.tasks[0].isPrestart);
    52      assert.ok(Chart.tasks[1].isSidecar);
    53      assert.ok(Chart.tasks[2].isMain);
    54  
    55      Chart.tasks.forEach(task => {
    56        assert.notOk(task.isActive);
    57        assert.notOk(task.isFinished);
    58      });
    59    });
    60  
    61    test('it doesn’t render when there’s only one phase', async function(assert) {
    62      this.set('tasks', [
    63        {
    64          lifecycleName: 'main',
    65        },
    66      ]);
    67  
    68      await render(hbs`{{lifecycle-chart tasks=tasks}}`);
    69      assert.notOk(Chart.isPresent);
    70    });
    71  
    72    test('it reflects phase and task states when states are passed in', async function(assert) {
    73      this.set(
    74        'taskStates',
    75        tasks.map(task => {
    76          return { task };
    77        })
    78      );
    79  
    80      await render(hbs`{{lifecycle-chart taskStates=taskStates}}`);
    81      assert.ok(Chart.isPresent);
    82  
    83      Chart.phases.forEach(phase => assert.notOk(phase.isActive));
    84  
    85      Chart.tasks.forEach(task => {
    86        assert.notOk(task.isActive);
    87        assert.notOk(task.isFinished);
    88      });
    89  
    90      this.set('taskStates.firstObject.state', 'running');
    91      await settled();
    92  
    93      assert.ok(Chart.phases[1].isActive);
    94      assert.ok(Chart.tasks[3].isActive);
    95  
    96      this.set('taskStates.firstObject.finishedAt', new Date());
    97      await settled();
    98  
    99      assert.ok(Chart.tasks[3].isFinished);
   100    });
   101  });