QUnit.module("result-set");

import ResultSet from "discourse/models/result-set";
import createStore from "helpers/create-store";

QUnit.test("defaults", assert => {
  const rs = ResultSet.create({ content: [] });
  assert.equal(rs.get("length"), 0);
  assert.equal(rs.get("totalRows"), 0);
  assert.ok(!rs.get("loadMoreUrl"));
  assert.ok(!rs.get("loading"));
  assert.ok(!rs.get("loadingMore"));
  assert.ok(!rs.get("refreshing"));
});

QUnit.test("pagination support", assert => {
  const store = createStore();
  return store.findAll("widget").then(function(rs) {
    assert.equal(rs.get("length"), 2);
    assert.equal(rs.get("totalRows"), 4);
    assert.ok(rs.get("loadMoreUrl"), "has a url to load more");
    assert.ok(!rs.get("loadingMore"), "it is not loading more");
    assert.ok(rs.get("canLoadMore"));

    const promise = rs.loadMore();

    assert.ok(rs.get("loadingMore"), "it is loading more");
    promise.then(function() {
      assert.ok(!rs.get("loadingMore"), "it finished loading more");
      assert.equal(rs.get("length"), 4);
      assert.ok(!rs.get("loadMoreUrl"));
      assert.ok(!rs.get("canLoadMore"));
    });
  });
});

QUnit.test("refresh support", assert => {
  const store = createStore();
  return store.findAll("widget").then(function(rs) {
    assert.equal(
      rs.get("refreshUrl"),
      "/widgets?refresh=true",
      "it has the refresh url"
    );

    const promise = rs.refresh();

    assert.ok(rs.get("refreshing"), "it is refreshing");
    promise.then(function() {
      assert.ok(!rs.get("refreshing"), "it is finished refreshing");
    });
  });
});