All files / src/components robo-coasters.component.js

100% Statements 17/17
100% Branches 4/4
100% Functions 4/4
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53      1x 1x                                   4x 4x 4x 4x 4x         4x       4x   1x 1x   1x 1x   1x   2x 2x         1x  
import { router } from '../router.js';
import { cloneTemplate, RoboComponent } from './robo.component.js';
 
const template = document.createElement('template');
template.innerHTML = `
<div class="container">
    <div class="row">
        <h1 class="col-12 display-2">Robo Coasters
        </h1>
    </div>
    <div id="view"><robo-choose-ride></robo-choose-ride></div>
    <div class="alert alert-default" role="alert">
        <h4 class="alert-heading">Prrt!</h4>
        Curious about the <a target="_blank" href="reports/coverage/lcov-report/index.html">code coverage report</a> or the <a target="_blank" href="reports/mutation/mutation.html">mutation testing report</a>? 
    </div>
</div>
`;
export class RoboCoastersComponent extends RoboComponent {
  /** @type {string | undefined} */
  currentlyViewedRoute;
 
  connectedCallback() {
    this.appendChild(cloneTemplate(template));
    this.view = this.by.id.view;
    this.routerSubscription = router.onNext((route) => {
      this.route = route;
      this.render();
    });
  }
 
  disconnectedCallback() {
    this.routerSubscription();
  }
 
  render() {
    switch (this.route[0]) {
      case 'ride':
        this.view.innerHTML = `<robo-ride ride-id="${this.route[1]}"></robo-ride>`;
        break;
      case 'success':
        this.view.innerHTML = `<robo-success></robo-success>`;
        break;
      case '':
        this.view.innerHTML = `<robo-choose-ride></robo-choose-ride>`;
      default:
        router.navigate([]);
        break;
    }
  }
}
 
customElements.define('robo-coasters', RoboCoastersComponent);