import { acceptance } from "helpers/qunit-helpers";
acceptance("Admin - Watched Words", { loggedIn: true });

QUnit.test("list words in groups", assert => {
  visit("/admin/logs/watched_words/action/block");
  andThen(() => {
    assert.ok(exists('.watched-words-list'));
    assert.ok(!exists('.watched-words-list .watched-word'), "Don't show bad words by default.");
  });

  fillIn('.admin-controls .controls input[type=text]', 'li');
  andThen(() => {
    assert.equal(find('.watched-words-list .watched-word').length, 1, "When filtering, show words even if checkbox is unchecked.");
  });

  fillIn('.admin-controls .controls input[type=text]', '');
  andThen(() => {
    assert.ok(!exists('.watched-words-list .watched-word'), "Clearing the filter hides words again.");
  });

  click('.show-words-checkbox');
  andThen(() => {
    assert.ok(exists('.watched-words-list .watched-word'), "Always show the words when checkbox is checked.");
  });

  click('.nav-stacked .censor a');
  andThen(() => {
    assert.ok(exists('.watched-words-list'));
    assert.ok(!exists('.watched-words-list .watched-word'), "Empty word list.");
  });
});

QUnit.test("add words", assert => {
  visit("/admin/logs/watched_words/action/block");
  andThen(() => {
    click('.show-words-checkbox');
    fillIn('.watched-word-form input', 'poutine');
  });
  click('.watched-word-form button');
  andThen(() => {
    let found = [];
    _.each(find('.watched-words-list .watched-word'), i => {
      if ($(i).text().trim() === 'poutine') {
        found.push(true);
      }
    });
    assert.equal(found.length, 1);
  });
});

QUnit.test("remove words", assert => {
  visit("/admin/logs/watched_words/action/block");
  click('.show-words-checkbox');

  let word = null;
  andThen(() => {
    _.each(find('.watched-words-list .watched-word'), i => {
      if ($(i).text().trim() === 'anise') {
        word = i;
      }
    });
    click('#' + $(word).attr('id'));
  });
  andThen(() => {
    assert.equal(find('.watched-words-list .watched-word').length, 1);
  });
});