import componentTest from 'helpers/component-test';
moduleForComponent('menu-panel', {integration: true});

componentTest('as a dropdown', {
  template: `
    <div id='outside-area'>click me</div>

    <div class='menu-selected'></div>

    {{#menu-panel visible=panelVisible markActive=".menu-selected" force="drop-down"}}
      Some content
    {{/menu-panel}}
  `,

  setup() {
    this.set('panelVisible', false);
  },

  test(assert) {
    assert.ok(exists(".menu-panel.hidden"), "hidden by default");

    this.set('panelVisible', true);
    andThen(() => {
      assert.ok(!exists(".menu-panel.hidden"), "toggling visible makes it appear");
    });

    click('#outside-area')
    andThen(() => {
      assert.ok(exists(".menu-panel.hidden"), "clicking the body hides the menu");
      assert.equal(this.get('panelVisible'), false, 'it updates the bound variable');
    });
  }
});

componentTest('as a slide-in', {
  template: `
    <div id='outside-area'>click me</div>
    <div class='menu-selected'></div>

    {{#menu-panel visible=panelVisible markActive=".menu-selected" force="slide-in"}}
      Some content
    {{/menu-panel}}
  `,

  setup() {
    this.set('panelVisible', false);
  },

  test(assert) {
    assert.ok(exists(".menu-panel.hidden"), "hidden by default");

    this.set('panelVisible', true);
    andThen(() => {
      assert.ok(!exists(".menu-panel.hidden"), "toggling visible makes it appear");
    });

    click('#outside-area')
    andThen(() => {
      assert.ok(exists(".menu-panel.hidden"), "clicking the body hides the menu");
      assert.equal(this.get('panelVisible'), false, 'it updates the bound variable');
      this.set('panelVisible', true);
    });

  }
});
