diff --git a/assets/javascripts/discourse/models/docs.js.es6 b/assets/javascripts/discourse/models/docs.js.es6 index 4250132..83c8e39 100644 --- a/assets/javascripts/discourse/models/docs.js.es6 +++ b/assets/javascripts/discourse/models/docs.js.es6 @@ -33,33 +33,22 @@ Docs.reopenClass({ filters.push(`topic=${params.selectedTopic}`); } - let promise = ajax(`/docs.json?${filters.join("&")}`); - - promise = promise.then((data) => { + return ajax(`/docs.json?${filters.join("&")}`).then((data) => { data.topics.topic_list.topics = data.topics.topic_list.topics.map( - (topic) => { - topic = Topic.create(topic); - return topic; - } + (topic) => Topic.create(topic) ); data.topic = Topic.create(data.topic); return data; }); - - return promise; }, loadMore(loadMoreUrl) { - let promise = ajax(loadMoreUrl); - - promise = promise.then((data) => { + return ajax(loadMoreUrl).then((data) => { data.topics.topic_list.topics = data.topics.topic_list.topics.map( (topic) => Topic.create(topic) ); return data; }); - - return promise; }, }); diff --git a/assets/javascripts/discourse/templates/components/docs-category.hbs b/assets/javascripts/discourse/templates/components/docs-category.hbs index 622c7f6..b4c6c3b 100644 --- a/assets/javascripts/discourse/templates/components/docs-category.hbs +++ b/assets/javascripts/discourse/templates/components/docs-category.hbs @@ -1,4 +1,4 @@ - + {{#unless category.active}} {{d-icon "plus"}} {{/unless}} diff --git a/assets/javascripts/discourse/templates/components/docs-tag.hbs b/assets/javascripts/discourse/templates/components/docs-tag.hbs index f873ac8..18379a9 100644 --- a/assets/javascripts/discourse/templates/components/docs-tag.hbs +++ b/assets/javascripts/discourse/templates/components/docs-tag.hbs @@ -1,4 +1,4 @@ - + {{#unless tag.active}} {{d-icon "plus"}} {{/unless}} diff --git a/assets/javascripts/discourse/templates/docs-index.hbs b/assets/javascripts/discourse/templates/docs-index.hbs index 9d48be2..3e67577 100644 --- a/assets/javascripts/discourse/templates/docs-index.hbs +++ b/assets/javascripts/discourse/templates/docs-index.hbs @@ -30,8 +30,7 @@ {{#each categories as |category|}} {{docs-category category=category - selectCategory=(action "updateSelectedCategories" - tagName="") + selectCategory=(action "updateSelectedCategories" category) }} {{/each}} @@ -43,7 +42,7 @@ {{#each tags as |tag|}} {{docs-tag tag=tag - selectTag=(action "updateSelectedTags") + selectTag=(action "updateSelectedTags" tag) }} {{/each}} diff --git a/test/javascripts/acceptance/docs-test.js.es6 b/test/javascripts/acceptance/docs-test.js.es6 index 740bda9..e310c80 100644 --- a/test/javascripts/acceptance/docs-test.js.es6 +++ b/test/javascripts/acceptance/docs-test.js.es6 @@ -1,4 +1,4 @@ -import { acceptance, queryAll } from "helpers/qunit-helpers"; +import { acceptance, count, query } from "helpers/qunit-helpers"; import docsFixtures from "../fixtures/docs"; acceptance("Docs", function (needs) { @@ -8,7 +8,25 @@ acceptance("Docs", function (needs) { }); needs.pretender((server, helper) => { - server.get("/docs.json", () => helper.response(docsFixtures)); + server.get("/docs.json", (request) => { + if (request.queryParams.category === "1") { + const fixture = JSON.parse(JSON.stringify(docsFixtures)); + + return helper.response( + Object.assign(fixture, { + categories: [ + { + id: 1, + count: 119, + active: true, + }, + ], + }) + ); + } else { + return helper.response(docsFixtures); + } + }); }); test("index page", async function (assert) { @@ -16,11 +34,19 @@ acceptance("Docs", function (needs) { await click("#toggle-hamburger-menu"); await click(".docs-link"); - assert.equal(queryAll(".docs-category")[0].innerText.trim(), "bug 119"); - assert.equal(queryAll(".docs-tag")[0].innerText.trim(), "something 74"); + assert.equal(query(".docs-category").innerText.trim(), "bug 119"); + assert.equal(query(".docs-tag").innerText.trim(), "something 74"); assert.equal( - queryAll(".docs-topic-link")[0].innerText.trim(), + query(".docs-topic-link").innerText.trim(), "Importing from Software X" ); }); + + test("selecting a category", async function (assert) { + await visit("/docs"); + assert.equal(count(".docs-category.selected"), 0); + + await click(".docs-item.docs-category"); + assert.equal(count(".docs-category.selected"), 1); + }); });