diff --git a/src/app/layout/boxes/boxes.component.spec.ts b/src/app/layout/boxes/boxes.component.spec.ts index 233c5eb..d7d0534 100644 --- a/src/app/layout/boxes/boxes.component.spec.ts +++ b/src/app/layout/boxes/boxes.component.spec.ts @@ -33,12 +33,14 @@ describe("Boxes Component", () => { providers: [ helpers.createProviderToValue('SessionService', helpers.mocks.sessionWithCurrentUser({})), helpers.createProviderToValue('AuthService', helpers.mocks.authService), - helpers.createProviderToValue('$state', state) + helpers.createProviderToValue('$state', state), + helpers.createProviderToValue('TranslatorService', translatorService) ] }); helper = new ComponentTestHelper(cls, done); }); + let translatorService = jasmine.createSpyObj("translatorService", ["currentLanguage"]); let state = jasmine.createSpyObj("state", ["current"]); state.current = { name: "" }; diff --git a/src/app/layout/boxes/display-blocks.filter.spec.ts b/src/app/layout/boxes/display-blocks.filter.spec.ts index 962a698..dd21a24 100644 --- a/src/app/layout/boxes/display-blocks.filter.spec.ts +++ b/src/app/layout/boxes/display-blocks.filter.spec.ts @@ -4,71 +4,81 @@ import {DisplayBlocks} from './display-blocks.filter'; describe("Filters", () => { describe("Display Blocks Filter", () => { + let translatorService = jasmine.createSpyObj("translatorService", ["currentLanguage"]); + it("not fail when blocks is null", done => { - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(null, true, {})).toEqual([]); done(); }); it("return blocks when no setting is passed", done => { let blocks = [{}]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual(blocks); done(); }); it("return blocks when no display is passed", done => { let blocks = [{ setting: {} }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual(blocks); done(); }); it("filter invisible blocks", done => { let blocks = [{ settings: { display: "never" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual([]); done(); }); it("filter blocks with except_home_page in homepage", done => { let blocks = [{ settings: { display: "except_home_page" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual([]); done(); }); it("filter blocks with home_page_only outside homepage", done => { let blocks = [{ settings: { display: "home_page_only" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, false, {})).toEqual([]); done(); }); it("show all blocks when display_user is all for logged user", done => { let blocks = [{ settings: { display_user: "all" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual(blocks); done(); }); it("show all blocks when display_user is all for not logged user", done => { let blocks = [{ settings: { display_user: "all" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, null)).toEqual(blocks); done(); }); it("filter blocks when display_user is logged for not logged user", done => { let blocks = [{ settings: { display_user: "logged" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, null)).toEqual([]); done(); }); it("filter blocks when display_user is not_logged for logged user", done => { let blocks = [{ settings: { display_user: "not_logged" } }]; - let filter = new DisplayBlocks(); + let filter = new DisplayBlocks(translatorService); + expect(filter.transform(blocks, true, {})).toEqual([]); + done(); + }); + + it("filter blocks with different language", done => { + let blocks = [{ settings: { language: "en" } }]; + translatorService.currentLanguage = jasmine.createSpy("currentLanguage").and.returnValue("pt"); + let filter = new DisplayBlocks(translatorService); expect(filter.transform(blocks, true, {})).toEqual([]); done(); }); diff --git a/src/app/layout/boxes/display-blocks.filter.ts b/src/app/layout/boxes/display-blocks.filter.ts index 2ba4a89..aec09b8 100644 --- a/src/app/layout/boxes/display-blocks.filter.ts +++ b/src/app/layout/boxes/display-blocks.filter.ts @@ -1,13 +1,18 @@ import {Pipe, Inject} from "ng-forward"; +import {TranslatorService} from "../../shared/services/translator.service"; @Pipe("displayBlocks") +@Inject(TranslatorService) export class DisplayBlocks { + constructor(private translatorService: TranslatorService) { } + transform(blocks: noosfero.Block[], isHomepage: boolean, currentUser: noosfero.User) { let selected: noosfero.Block[] = []; blocks = blocks || []; for (let block of blocks) { - if (this.visible(block, isHomepage) && this.displayToUser(block, currentUser)) { + if (this.visible(block, isHomepage) && this.displayToUser(block, currentUser) && + this.displayOnLanguage(block, this.translatorService.currentLanguage())) { selected.push(block); } } @@ -24,4 +29,10 @@ export class DisplayBlocks { return !displayUser || displayUser === "all" || (currentUser ? displayUser === "logged" : displayUser === "not_logged"); } + + private displayOnLanguage(block: noosfero.Block, language: string) { + let displayLanguage = block.settings ? (block.settings)['language'] : null; + return !displayLanguage || displayLanguage === "all" || + language === displayLanguage; + } } -- libgit2 0.21.2