Commit b07589aabca77dafb91532dd39b4619940ccaa2d
1 parent
e386083e
Exists in
master
and in
30 other branches
Move post comment component to its folder
Showing
10 changed files
with
110 additions
and
106 deletions
Show diff stats
src/app/article/comment/comments.component.spec.ts
... | ... | @@ -2,7 +2,7 @@ import {Provider, provide, Component} from 'ng-forward'; |
2 | 2 | import * as helpers from "../../../spec/helpers"; |
3 | 3 | |
4 | 4 | import {CommentsComponent} from './comments.component'; |
5 | -import {PostCommentComponent} from "./post-comment.component"; | |
5 | +import {PostCommentComponent} from "./post-comment/post-comment.component"; | |
6 | 6 | |
7 | 7 | const htmlTemplate: string = '<noosfero-comments [article]="ctrl.article"></noosfero-comments>'; |
8 | 8 | ... | ... |
src/app/article/comment/comments.component.ts
1 | 1 | import { Inject, Input, Component, provide } from 'ng-forward'; |
2 | -import { PostCommentComponent } from "./post-comment.component"; | |
2 | +import { PostCommentComponent } from "./post-comment/post-comment.component"; | |
3 | 3 | import { CommentService } from "../../../lib/ng-noosfero-api/http/comment.service"; |
4 | 4 | import { CommentComponent } from "./comment.component"; |
5 | 5 | ... | ... |
src/app/article/comment/post-comment.component.spec.ts
... | ... | @@ -1,66 +0,0 @@ |
1 | -import {Provider, provide, Component} from 'ng-forward'; | |
2 | -import * as helpers from "../../../spec/helpers"; | |
3 | - | |
4 | -import {PostCommentComponent} from './post-comment.component'; | |
5 | - | |
6 | -const htmlTemplate: string = '<noosfero-post-comment [article]="ctrl.article" [reply-of]="ctrl.comment"></noosfero-post-comment>'; | |
7 | - | |
8 | -describe("Components", () => { | |
9 | - describe("Post Comment Component", () => { | |
10 | - | |
11 | - beforeEach(angular.mock.module("templates")); | |
12 | - | |
13 | - let commentService = jasmine.createSpyObj("commentService", ["createInArticle"]); | |
14 | - let providers = [ | |
15 | - new Provider('CommentService', { useValue: commentService }), | |
16 | - new Provider('NotificationService', { useValue: helpers.mocks.notificationService }) | |
17 | - ].concat(helpers.provideFilters("translateFilter")); | |
18 | - | |
19 | - @Component({ selector: 'test-container-component', directives: [PostCommentComponent], template: htmlTemplate, providers: providers }) | |
20 | - class ContainerComponent { | |
21 | - article = { id: 1 }; | |
22 | - comment = { id: 2 }; | |
23 | - } | |
24 | - | |
25 | - it("render the post comment form", done => { | |
26 | - helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
27 | - expect(fixture.debugElement.queryAll("form").length).toEqual(1); | |
28 | - done(); | |
29 | - }); | |
30 | - }); | |
31 | - | |
32 | - it("emit an event when create comment", done => { | |
33 | - helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
34 | - let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
35 | - commentService.createInArticle = jasmine.createSpy("createInArticle").and.returnValue(helpers.mocks.promiseResultTemplate({ data: {} })); | |
36 | - component["$rootScope"].$emit = jasmine.createSpy("$emit"); | |
37 | - component.save(); | |
38 | - expect(component["$rootScope"].$emit).toHaveBeenCalledWith(PostCommentComponent.EVENT_COMMENT_RECEIVED, jasmine.any(Object)); | |
39 | - done(); | |
40 | - }); | |
41 | - }); | |
42 | - | |
43 | - it("notify success when create comment", done => { | |
44 | - helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
45 | - let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
46 | - commentService.createInArticle = jasmine.createSpy("createInArticle").and.returnValue(helpers.mocks.promiseResultTemplate({ data: {} })); | |
47 | - component["notificationService"].success = jasmine.createSpy("success"); | |
48 | - component.save(); | |
49 | - expect(component["notificationService"].success).toHaveBeenCalled(); | |
50 | - done(); | |
51 | - }); | |
52 | - }); | |
53 | - | |
54 | - it("set the reply id when reply to a comment", done => { | |
55 | - helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
56 | - let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
57 | - component.comment = <any>{ reply_of_id: null }; | |
58 | - component.replyOf = <any>{ id: 10 }; | |
59 | - component.save(); | |
60 | - expect(component.comment.reply_of_id).toEqual(component.replyOf.id); | |
61 | - done(); | |
62 | - }); | |
63 | - }); | |
64 | - | |
65 | - }); | |
66 | -}); |
src/app/article/comment/post-comment.component.ts
... | ... | @@ -1,30 +0,0 @@ |
1 | -import { Inject, Input, Component } from 'ng-forward'; | |
2 | -import { CommentService } from "../../../lib/ng-noosfero-api/http/comment.service"; | |
3 | -import { NotificationService } from "../../shared/services/notification.service"; | |
4 | - | |
5 | -@Component({ | |
6 | - selector: 'noosfero-post-comment', | |
7 | - templateUrl: 'app/article/comment/post-comment.html' | |
8 | -}) | |
9 | -@Inject(CommentService, NotificationService, "$rootScope") | |
10 | -export class PostCommentComponent { | |
11 | - | |
12 | - public static EVENT_COMMENT_RECEIVED = "comment.received"; | |
13 | - | |
14 | - @Input() article: noosfero.Article; | |
15 | - @Input() replyOf: noosfero.Comment; | |
16 | - | |
17 | - comment: noosfero.Comment; | |
18 | - | |
19 | - constructor(private commentService: CommentService, private notificationService: NotificationService, private $rootScope: ng.IScope) { } | |
20 | - | |
21 | - save() { | |
22 | - if (this.replyOf && this.comment) { | |
23 | - this.comment.reply_of_id = this.replyOf.id; | |
24 | - } | |
25 | - this.commentService.createInArticle(this.article, this.comment).then((result: noosfero.RestResult<noosfero.Comment>) => { | |
26 | - this.$rootScope.$emit(PostCommentComponent.EVENT_COMMENT_RECEIVED, result.data); | |
27 | - this.notificationService.success({ title: "Good job!", message: "Comment saved!" }); | |
28 | - }); | |
29 | - } | |
30 | -} |
src/app/article/comment/post-comment.html
src/app/article/comment/post-comment/post-comment.component.spec.ts
0 → 100644
... | ... | @@ -0,0 +1,66 @@ |
1 | +import {Provider, provide, Component} from 'ng-forward'; | |
2 | +import * as helpers from "../../../../spec/helpers"; | |
3 | + | |
4 | +import {PostCommentComponent} from './post-comment.component'; | |
5 | + | |
6 | +const htmlTemplate: string = '<noosfero-post-comment [article]="ctrl.article" [reply-of]="ctrl.comment"></noosfero-post-comment>'; | |
7 | + | |
8 | +describe("Components", () => { | |
9 | + describe("Post Comment Component", () => { | |
10 | + | |
11 | + beforeEach(angular.mock.module("templates")); | |
12 | + | |
13 | + let commentService = jasmine.createSpyObj("commentService", ["createInArticle"]); | |
14 | + let providers = [ | |
15 | + new Provider('CommentService', { useValue: commentService }), | |
16 | + new Provider('NotificationService', { useValue: helpers.mocks.notificationService }) | |
17 | + ].concat(helpers.provideFilters("translateFilter")); | |
18 | + | |
19 | + @Component({ selector: 'test-container-component', directives: [PostCommentComponent], template: htmlTemplate, providers: providers }) | |
20 | + class ContainerComponent { | |
21 | + article = { id: 1 }; | |
22 | + comment = { id: 2 }; | |
23 | + } | |
24 | + | |
25 | + it("render the post comment form", done => { | |
26 | + helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
27 | + expect(fixture.debugElement.queryAll("form").length).toEqual(1); | |
28 | + done(); | |
29 | + }); | |
30 | + }); | |
31 | + | |
32 | + it("emit an event when create comment", done => { | |
33 | + helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
34 | + let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
35 | + commentService.createInArticle = jasmine.createSpy("createInArticle").and.returnValue(helpers.mocks.promiseResultTemplate({ data: {} })); | |
36 | + component["$rootScope"].$emit = jasmine.createSpy("$emit"); | |
37 | + component.save(); | |
38 | + expect(component["$rootScope"].$emit).toHaveBeenCalledWith(PostCommentComponent.EVENT_COMMENT_RECEIVED, jasmine.any(Object)); | |
39 | + done(); | |
40 | + }); | |
41 | + }); | |
42 | + | |
43 | + it("notify success when create comment", done => { | |
44 | + helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
45 | + let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
46 | + commentService.createInArticle = jasmine.createSpy("createInArticle").and.returnValue(helpers.mocks.promiseResultTemplate({ data: {} })); | |
47 | + component["notificationService"].success = jasmine.createSpy("success"); | |
48 | + component.save(); | |
49 | + expect(component["notificationService"].success).toHaveBeenCalled(); | |
50 | + done(); | |
51 | + }); | |
52 | + }); | |
53 | + | |
54 | + it("set the reply id when reply to a comment", done => { | |
55 | + helpers.createComponentFromClass(ContainerComponent).then(fixture => { | |
56 | + let component: PostCommentComponent = fixture.debugElement.componentViewChildren[0].componentInstance; | |
57 | + component.comment = <any>{ reply_of_id: null }; | |
58 | + component.replyOf = <any>{ id: 10 }; | |
59 | + component.save(); | |
60 | + expect(component.comment.reply_of_id).toEqual(component.replyOf.id); | |
61 | + done(); | |
62 | + }); | |
63 | + }); | |
64 | + | |
65 | + }); | |
66 | +}); | ... | ... |
src/app/article/comment/post-comment/post-comment.component.ts
0 → 100644
... | ... | @@ -0,0 +1,30 @@ |
1 | +import { Inject, Input, Component } from 'ng-forward'; | |
2 | +import { CommentService } from "../../../../lib/ng-noosfero-api/http/comment.service"; | |
3 | +import { NotificationService } from "../../../shared/services/notification.service"; | |
4 | + | |
5 | +@Component({ | |
6 | + selector: 'noosfero-post-comment', | |
7 | + templateUrl: 'app/article/comment/post-comment/post-comment.html' | |
8 | +}) | |
9 | +@Inject(CommentService, NotificationService, "$rootScope") | |
10 | +export class PostCommentComponent { | |
11 | + | |
12 | + public static EVENT_COMMENT_RECEIVED = "comment.received"; | |
13 | + | |
14 | + @Input() article: noosfero.Article; | |
15 | + @Input() replyOf: noosfero.Comment; | |
16 | + | |
17 | + comment: noosfero.Comment; | |
18 | + | |
19 | + constructor(private commentService: CommentService, private notificationService: NotificationService, private $rootScope: ng.IScope) { } | |
20 | + | |
21 | + save() { | |
22 | + if (this.replyOf && this.comment) { | |
23 | + this.comment.reply_of_id = this.replyOf.id; | |
24 | + } | |
25 | + this.commentService.createInArticle(this.article, this.comment).then((result: noosfero.RestResult<noosfero.Comment>) => { | |
26 | + this.$rootScope.$emit(PostCommentComponent.EVENT_COMMENT_RECEIVED, result.data); | |
27 | + this.notificationService.success({ title: "Good job!", message: "Comment saved!" }); | |
28 | + }); | |
29 | + } | |
30 | +} | ... | ... |
... | ... | @@ -0,0 +1,6 @@ |
1 | +<form> | |
2 | + <div class="form-group"> | |
3 | + <textarea class="form-control custom-control" rows="3" ng-model="ctrl.comment.body"></textarea> | |
4 | + </div> | |
5 | + <button type="submit" class="btn btn-default" ng-click="ctrl.save()">{{"comment.post" | translate}}</button> | |
6 | +</form> | ... | ... |
src/languages/en.json
... | ... | @@ -29,5 +29,7 @@ |
29 | 29 | "notification.error.default.title": "Oops...", |
30 | 30 | "notification.profile.not_found": "Page not found", |
31 | 31 | "notification.http_error.401.message": "Unauthorized", |
32 | - "notification.http_error.500.message": "Server error" | |
32 | + "notification.http_error.500.message": "Server error", | |
33 | + "comment.post": "Post a comment", | |
34 | + "comment.reply": "reply" | |
33 | 35 | } | ... | ... |
src/languages/pt.json
... | ... | @@ -29,5 +29,7 @@ |
29 | 29 | "notification.error.default.title": "Oops...", |
30 | 30 | "notification.profile.not_found": "Página não encontrada", |
31 | 31 | "notification.http_error.401.message": "Não autorizado", |
32 | - "notification.http_error.500.message": "Erro no servidor" | |
32 | + "notification.http_error.500.message": "Erro no servidor", | |
33 | + "comment.post": "Commentar", | |
34 | + "comment.reply": "responder" | |
33 | 35 | } | ... | ... |