diff --git a/src/app/layout/blocks/recent-documents/recent-documents-block.component.spec.ts b/src/app/layout/blocks/recent-documents/recent-documents-block.component.spec.ts
index f2cf273..ab6488c 100644
--- a/src/app/layout/blocks/recent-documents/recent-documents-block.component.spec.ts
+++ b/src/app/layout/blocks/recent-documents/recent-documents-block.component.spec.ts
@@ -2,6 +2,7 @@ import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builde
import {Provider, Input, provide, Component} from 'ng-forward';
import {provideFilters} from '../../../../spec/helpers';
import {RecentDocumentsBlockComponent} from './recent-documents-block.component';
+import * as helpers from "./../../../../spec/helpers";
const htmlTemplate: string = '';
@@ -11,11 +12,13 @@ describe("Components", () => {
describe("Recent Documents Block Component", () => {
let settingsObj = {};
+ let article = { name: "article1" };
let mockedBlockService = {
getApiContent: (block: noosfero.Block): any => {
- return Promise.resolve({ articles: [{ name: "article1" }], headers: (name: string) => { return name; } });
+ return Promise.resolve({ articles: [ article ], headers: (name: string) => { return name; } });
}
};
+ let articleService: any = helpers.mocks.articleService;
let profile = { name: 'profile-name' };
beforeEach(angular.mock.module("templates"));
@@ -28,6 +31,7 @@ describe("Components", () => {
new Provider('BlockService', {
useValue: mockedBlockService
}),
+ new Provider('ArticleService', { useValue: articleService })
].concat(provideFilters("truncateFilter", "stripTagsFilter"));
}
let componentClass: any = null;
@@ -47,7 +51,7 @@ describe("Components", () => {
it("get recent documents from the block service", done => {
tcb.createAsync(getComponent()).then(fixture => {
let recentDocumentsBlock: RecentDocumentsBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
- expect(recentDocumentsBlock.documents).toEqual([{ name: "article1" }]);
+ expect(recentDocumentsBlock.documents).toEqual([ article ]);
done();
});
});
@@ -61,5 +65,22 @@ describe("Components", () => {
});
});
+ it("verify removed article has been removed from list", done => {
+ tcb.createAsync(getComponent()).then(fixture => {
+ let recentDocumentsBlock: RecentDocumentsBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
+ expect(recentDocumentsBlock.documents.length).toEqual(1);
+ simulateRemovedEvent(recentDocumentsBlock);
+ expect(recentDocumentsBlock.documents.length).toEqual(0);
+ done();
+ })
+ });
+
+ /**
+ * Simulate the ArticleService ArticleEvent.removed event
+ */
+ function simulateRemovedEvent(recentDocumentsBlock: RecentDocumentsBlockComponent) {
+ recentDocumentsBlock.articleService["notifyArticleRemovedListeners"](article);
+ }
+
});
});
diff --git a/src/app/layout/blocks/recent-documents/recent-documents-block.component.ts b/src/app/layout/blocks/recent-documents/recent-documents-block.component.ts
index 190b992..d051a92 100644
--- a/src/app/layout/blocks/recent-documents/recent-documents-block.component.ts
+++ b/src/app/layout/blocks/recent-documents/recent-documents-block.component.ts
@@ -1,11 +1,13 @@
import {Component, Inject, Input} from "ng-forward";
import {BlockService} from "../../../../lib/ng-noosfero-api/http/block.service";
+import {ArticleService} from "./../../../../lib/ng-noosfero-api/http/article.service"
+import {Arrays} from "./../../../../lib/util/arrays"
@Component({
selector: "noosfero-recent-documents-block",
templateUrl: 'app/layout/blocks/recent-documents/recent-documents-block.html'
})
-@Inject(BlockService, "$state")
+@Inject(BlockService, "$state", ArticleService)
export class RecentDocumentsBlockComponent {
@Input() block: any;
@@ -15,7 +17,7 @@ export class RecentDocumentsBlockComponent {
documents: any;
documentsLoaded: boolean = false;
- constructor(private blockService: BlockService, private $state: any) { }
+ constructor(private blockService: BlockService, private $state: any, public articleService: ArticleService) { }
ngOnInit() {
this.profile = this.owner;
@@ -24,7 +26,14 @@ export class RecentDocumentsBlockComponent {
this.documents = content.articles;
this.documentsLoaded = true;
});
+ this.watchArticles();
}
+
+ watchArticles() {
+ this.articleService.subscribeToArticleRemoved((article: noosfero.Article) => {
+ Arrays.remove(this.documents, article);
+ });
+ }
openDocument(article: any) {
this.$state.go("main.profile.page", { page: article.path, profile: article.profile.identifier });
--
libgit2 0.21.2