116 lines
No EOL
3.6 KiB
JavaScript
116 lines
No EOL
3.6 KiB
JavaScript
describe("Diaspora.Widgets.AspectsDropdown", function() {
|
|
var aspectsDropdownWidget,
|
|
aspectsDropdown;
|
|
|
|
describe("when the dropdown is a publisher dropdown", function() {
|
|
beforeEach(function() {
|
|
spec.loadFixture("aspects_index");
|
|
|
|
Diaspora.Page = "TestPage";
|
|
Diaspora.instantiatePage();
|
|
|
|
aspectsDropdown = $("#publisher .dropdown");
|
|
aspectsDropdownWidget = Diaspora.BaseWidget.instantiate("AspectsDropdown", aspectsDropdown);
|
|
});
|
|
|
|
describe("clicking a radio button", function() {
|
|
describe("integration", function() {
|
|
it("calls AspectsDropdown#radioClicked", function() {
|
|
aspectsDropdownWidget = new Diaspora.Widgets.AspectsDropdown();
|
|
|
|
spyOn(aspectsDropdownWidget, "radioClicked");
|
|
|
|
aspectsDropdownWidget.publish("widget/ready", [aspectsDropdown]);
|
|
|
|
aspectsDropdownWidget.radioSelectors.first().click();
|
|
|
|
expect(aspectsDropdownWidget.radioClicked).toHaveBeenCalled();
|
|
})
|
|
});
|
|
|
|
it("clears the selected aspects", function() {
|
|
var aspectSelectors = aspectsDropdown.find(".aspect_selector").click();
|
|
|
|
expect(aspectsDropdown).toContain("li.aspect_selector.selected");
|
|
|
|
aspectsDropdown.find(".radio:first").click();
|
|
|
|
expect(aspectsDropdown).not.toContain("li.aspect_selector.selected");
|
|
});
|
|
|
|
it("clears selected radio buttons", function() {
|
|
aspectsDropdown.find(".selected").removeClass("selected");
|
|
|
|
var firstRadioSelector = aspectsDropdown.find(".radio:first"),
|
|
lastRadioSelector = aspectsDropdown.find(".radio:last");
|
|
|
|
expect(firstRadioSelector).not.toHaveClass("selected");
|
|
expect(lastRadioSelector).not.toHaveClass("selected");
|
|
|
|
firstRadioSelector.click();
|
|
|
|
expect(firstRadioSelector).toHaveClass("selected");
|
|
|
|
lastRadioSelector.click();
|
|
|
|
expect(firstRadioSelector).not.toHaveClass("selected");
|
|
expect(lastRadioSelector).toHaveClass("selected");
|
|
});
|
|
|
|
it("toggles the radio selector", function() {
|
|
var radioSelector = aspectsDropdown.find(".radio:first");
|
|
|
|
expect(radioSelector).not.toHaveClass("selected");
|
|
|
|
radioSelector.click();
|
|
|
|
expect(radioSelector).toHaveClass("selected");
|
|
|
|
radioSelector.click();
|
|
|
|
expect(radioSelector).not.toHaveClass("selected");
|
|
});
|
|
});
|
|
|
|
describe("clicking an aspect", function() {
|
|
describe("integration", function() {
|
|
it("calls through to AspectsDropdown#toggleAspectSelection", function() {
|
|
aspectsDropdownWidget = new Diaspora.Widgets.AspectsDropdown();
|
|
|
|
spyOn(aspectsDropdownWidget, "toggleAspectSelection");
|
|
|
|
aspectsDropdownWidget.publish("widget/ready", [aspectsDropdown]);
|
|
|
|
aspectsDropdownWidget.aspectSelectors.first().click();
|
|
|
|
expect(aspectsDropdownWidget.toggleAspectSelection).toHaveBeenCalled();
|
|
});
|
|
});
|
|
|
|
it("deselects the radio buttons", function() {
|
|
var aspectSelector = aspectsDropdownWidget.aspectSelectors.first(),
|
|
radioSelector = aspectsDropdown.find(".radio:last");
|
|
|
|
expect(radioSelector).toHaveClass("selected");
|
|
|
|
aspectSelector.click();
|
|
|
|
expect(radioSelector).not.toHaveClass("selected");
|
|
});
|
|
|
|
it("toggles the aspect selector", function() {
|
|
var aspectSelector = aspectsDropdownWidget.aspectSelectors.first();
|
|
|
|
expect(aspectSelector).not.toHaveClass("selected");
|
|
|
|
aspectSelector.click();
|
|
|
|
expect(aspectSelector).toHaveClass("selected");
|
|
|
|
aspectSelector.click();
|
|
|
|
expect(aspectSelector).not.toHaveClass("selected");
|
|
});
|
|
});
|
|
});
|
|
}); |