Commit b07589aabca77dafb91532dd39b4619940ccaa2d

Authored by Victor Costa
1 parent e386083e
Exists in master and in 1 other branch dev-fixes

Move post comment component to its folder

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
... ... @@ -1,6 +0,0 @@
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/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 +}
... ...
src/app/article/comment/post-comment/post-comment.html 0 → 100644
... ... @@ -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 }
... ...