import componentTest from 'helpers/component-test';

moduleForComponent('post-menu', {integration: true});

function setup(store) {
  const topic = store.createRecord('topic', {id: 123});
  const post = store.createRecord('post', {
    id: 1,
    post_number: 1,
    topic,
    like_count: 3,
    actions_summary: [
      {id: 2, count: 3, hidden: false, can_act: true}
    ]
  });

  this.on('toggleLike', function() {
    post.toggleProperty('likeAction.acted');
  });

  this.set('post', post);
}

componentTest('basic render', {
  template: '{{post-menu post=post}}',
  setup,
  test(assert) {
    assert.ok(!!this.$('.post-menu-area').length, 'it renders a post menu');
    assert.ok(!!this.$('.actions button[data-share-url]').length, 'it renders a share button');
  }
});

componentTest('liking', {
  template: '{{post-menu post=post toggleLike="toggleLike"}}',
  setup,
  test(assert) {
    assert.ok(!!this.$('.actions button.like').length);
    assert.ok(!!this.$('.actions button.like-count').length);

    click('.actions button.like');
    andThen(() => {
      assert.ok(!this.$('.actions button.like').length);
      assert.ok(!!this.$('.actions button.has-like').length);
    });

    click('.actions button.has-like');
    andThen(() => {
      assert.ok(!!this.$('.actions button.like').length);
      assert.ok(!this.$('.actions button.has-like').length);
    });
  }
});