126 lines
No EOL
4.5 KiB
JavaScript
126 lines
No EOL
4.5 KiB
JavaScript
describe("app.views.AspectsDropdown", function () {
|
|
function selectedAspects(view){
|
|
return _.pluck(view.$("input.aspect_ids").serializeArray(), "value")
|
|
}
|
|
|
|
beforeEach(function () {
|
|
loginAs({
|
|
aspects:[
|
|
{ id:3, name:"sauce" },
|
|
{ id:5, name:"conf" },
|
|
{ id:7, name:"lovers" }
|
|
]
|
|
})
|
|
|
|
this.view = new app.views.AspectsDropdown({model:factory.statusMessage({aspect_ids:undefined})})
|
|
})
|
|
|
|
describe("rendering", function () {
|
|
beforeEach(function () {
|
|
this.view.render()
|
|
})
|
|
it("sets aspect_ids to 'public' by default", function () {
|
|
expect(this.view.$("input.aspect_ids:checked").val()).toBe("public")
|
|
})
|
|
|
|
it("defaults to Public Visibility", function () {
|
|
expect(this.view.$("input.aspect_ids.public")).toBeChecked()
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("Public")
|
|
})
|
|
|
|
it("sets aspect_ids to 'public'", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["public"])
|
|
})
|
|
|
|
it("sets the dropdown title to 'public'", function () {
|
|
expect(this.view.$(".dropdown-toggle .text").text()).toBe("Public")
|
|
})
|
|
|
|
describe("setVisibility", function () {
|
|
function checkInput(input){
|
|
input.attr("checked", "checked")
|
|
input.trigger("change")
|
|
}
|
|
|
|
function uncheckInput(input){
|
|
input.attr("checked", false)
|
|
input.trigger("change")
|
|
}
|
|
|
|
describe("selecting All Aspects", function () {
|
|
beforeEach(function () {
|
|
this.input = this.view.$("input#aspect_ids_all_aspects")
|
|
checkInput(this.input)
|
|
})
|
|
|
|
it("calls set aspect_ids to 'all'", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["all_aspects"])
|
|
})
|
|
|
|
it("sets the dropdown title to 'public'", function () {
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("All Aspects")
|
|
})
|
|
})
|
|
|
|
describe("selecting An Aspect", function () {
|
|
beforeEach(function () {
|
|
this.input = this.view.$("input[name='lovers']")
|
|
checkInput(this.input)
|
|
})
|
|
|
|
it("sets the dropdown title to the aspect title", function () {
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("lovers")
|
|
})
|
|
|
|
it("sets aspect_ids to to the aspect id", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["7"])
|
|
})
|
|
|
|
describe("selecting another aspect", function () {
|
|
beforeEach(function () {
|
|
this.input = this.view.$("input[name='sauce']")
|
|
checkInput(this.input)
|
|
})
|
|
|
|
it("sets aspect_ids to the selected aspects", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["3", "7"])
|
|
})
|
|
|
|
it("sets the button text to the number of selected aspects", function () {
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
|
|
checkInput(this.view.$("input[name='conf']"))
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 3 aspects")
|
|
uncheckInput(this.view.$("input[name='conf']"))
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
|
|
})
|
|
|
|
describe("deselecting another aspect", function () {
|
|
it("removes the clicked aspect", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["3", "7"])
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("In 2 aspects")
|
|
uncheckInput(this.view.$("input[name='lovers']"))
|
|
expect(selectedAspects(this.view)).toEqual(["3"])
|
|
expect($.trim(this.view.$(".dropdown-toggle .text").text())).toBe("sauce")
|
|
})
|
|
})
|
|
|
|
describe("selecting all_aspects", function () {
|
|
it("sets aspect_ids to all_aspects", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["3", "7"])
|
|
checkInput(this.view.$("input[name='All Aspects']"))
|
|
expect(selectedAspects(this.view)).toEqual(["all_aspects"])
|
|
})
|
|
})
|
|
|
|
describe("selecting public", function () {
|
|
it("sets aspect_ids to public", function () {
|
|
expect(selectedAspects(this.view)).toEqual(["3", "7"])
|
|
checkInput(this.view.$("input[name='Public']"))
|
|
expect(selectedAspects(this.view)).toEqual(["public"])
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
}) |