decidim-comments 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -0
- data/app/assets/javascripts/decidim/comments/bundle.js +44 -44
- data/app/assets/javascripts/decidim/comments/bundle.js.map +1 -1
- data/app/assets/javascripts/decidim/comments/comments.js.erb +2 -0
- data/app/frontend/application/{apollo_client.js → apollo_client.ts} +5 -5
- data/app/frontend/application/application.component.test.tsx +36 -0
- data/app/frontend/application/application.component.tsx +37 -0
- data/app/frontend/application/icon.component.test.tsx +49 -0
- data/app/frontend/application/icon.component.tsx +35 -0
- data/app/frontend/comments/{add_comment_form.component.test.jsx → add_comment_form.component.test.tsx} +98 -92
- data/app/frontend/comments/{add_comment_form.component.jsx → add_comment_form.component.tsx} +152 -153
- data/app/frontend/comments/{comment.component.test.jsx → comment.component.test.tsx} +59 -71
- data/app/frontend/comments/{comment.component.jsx → comment.component.tsx} +114 -116
- data/app/frontend/comments/comment_order_selector.component.test.tsx +21 -0
- data/app/frontend/comments/comment_order_selector.component.tsx +88 -0
- data/app/frontend/comments/comment_thread.component.test.tsx +65 -0
- data/app/frontend/comments/comment_thread.component.tsx +70 -0
- data/app/frontend/comments/{comments.component.test.jsx → comments.component.test.tsx} +38 -81
- data/app/frontend/comments/{comments.component.jsx → comments.component.tsx} +49 -63
- data/app/frontend/comments/down_vote_button.component.test.tsx +39 -0
- data/app/frontend/comments/down_vote_button.component.tsx +89 -0
- data/app/frontend/comments/up_vote_button.component.test.tsx +39 -0
- data/app/frontend/comments/up_vote_button.component.tsx +89 -0
- data/app/frontend/comments/vote_button.component.tsx +36 -0
- data/app/frontend/comments/{vote_button_component.test.jsx → vote_button_component.test.tsx} +16 -20
- data/app/frontend/entry.ts +19 -0
- data/app/frontend/{comments → fragments}/add_comment_form_commentable.fragment.graphql +1 -1
- data/app/frontend/{comments → fragments}/add_comment_form_session.fragment.graphql +1 -1
- data/app/frontend/{comments → fragments}/comment.fragment.graphql +3 -1
- data/app/frontend/{comments → fragments}/comment_data.fragment.graphql +6 -3
- data/app/frontend/{comments → fragments}/comment_thread.fragment.graphql +3 -1
- data/app/frontend/{comments/down_vote.fragment.graphql → fragments/down_vote_button.fragment.graphql} +2 -2
- data/app/frontend/{comments/up_vote.fragment.graphql → fragments/up_vote_button.fragment.graphql} +2 -2
- data/app/frontend/{comments/add_comment_form.mutation.graphql → mutations/add_comment.mutation.graphql} +3 -1
- data/app/frontend/{comments → mutations}/down_vote.mutation.graphql +3 -1
- data/app/frontend/{comments → mutations}/up_vote.mutation.graphql +3 -1
- data/app/frontend/{comments → queries}/comments.query.graphql +4 -1
- data/app/frontend/support/{asset_url.js → asset_url.ts} +1 -1
- data/app/frontend/support/{generate_comments_data.js → generate_comments_data.ts} +11 -6
- data/app/frontend/support/{generate_user_data.js → generate_user_data.ts} +2 -2
- data/app/frontend/support/{generate_user_group_data.js → generate_user_group_data.ts} +2 -2
- data/app/frontend/support/graphql_transformer.js +32 -0
- data/app/frontend/support/load_translations.ts +44 -0
- data/app/frontend/support/{require_all.js → require_all.ts} +1 -1
- data/app/frontend/support/{resolve_graphql_query.js → resolve_graphql_query.ts} +7 -7
- data/app/frontend/support/schema.ts +119 -0
- data/config/locales/eu.yml +29 -5
- metadata +49 -51
- data/app/frontend/application/application.component.jsx +0 -37
- data/app/frontend/application/application.component.test.jsx +0 -33
- data/app/frontend/application/icon.component.jsx +0 -26
- data/app/frontend/application/icon.component.test.jsx +0 -53
- data/app/frontend/comments/comment_order_selector.component.jsx +0 -72
- data/app/frontend/comments/comment_order_selector.component.test.jsx +0 -20
- data/app/frontend/comments/comment_thread.component.jsx +0 -75
- data/app/frontend/comments/comment_thread.component.test.jsx +0 -83
- data/app/frontend/comments/down_vote_button.component.jsx +0 -98
- data/app/frontend/comments/down_vote_button.component.test.jsx +0 -48
- data/app/frontend/comments/featured_comment.component.jsx +0 -23
- data/app/frontend/comments/featured_comment.component.test.jsx +0 -15
- data/app/frontend/comments/up_vote_button.component.jsx +0 -98
- data/app/frontend/comments/up_vote_button.component.test.jsx +0 -48
- data/app/frontend/comments/vote_button.component.jsx +0 -32
- data/app/frontend/entry.js +0 -17
- data/app/frontend/entry.test.js +0 -31
- data/app/frontend/support/load_translations.js +0 -23
- data/app/frontend/support/stub_component.js +0 -29
@@ -0,0 +1,119 @@
|
|
1
|
+
// This file was automatically generated and should not be edited.
|
2
|
+
/* tslint:disable */
|
3
|
+
|
4
|
+
export interface AddCommentMutationVariables {
|
5
|
+
commentableId: string;
|
6
|
+
commentableType: string;
|
7
|
+
body: string;
|
8
|
+
alignment: number | null;
|
9
|
+
userGroupId: string | null;
|
10
|
+
}
|
11
|
+
|
12
|
+
export interface AddCommentMutation {
|
13
|
+
commentable: {
|
14
|
+
addComment: CommentThreadFragment & CommentFragment & CommentDataFragment & UpVoteFragment & DownVoteFragment,
|
15
|
+
} | null;
|
16
|
+
}
|
17
|
+
|
18
|
+
export interface DownVoteMutationVariables {
|
19
|
+
id: string;
|
20
|
+
}
|
21
|
+
|
22
|
+
export interface DownVoteMutation {
|
23
|
+
comment: {
|
24
|
+
downVote: CommentFragment & CommentDataFragment & UpVoteFragment & DownVoteFragment,
|
25
|
+
} | null;
|
26
|
+
}
|
27
|
+
|
28
|
+
export interface UpVoteMutationVariables {
|
29
|
+
id: string;
|
30
|
+
}
|
31
|
+
|
32
|
+
export interface UpVoteMutation {
|
33
|
+
comment: {
|
34
|
+
upVote: CommentFragment & CommentDataFragment & UpVoteFragment & DownVoteFragment,
|
35
|
+
} | null;
|
36
|
+
}
|
37
|
+
|
38
|
+
export interface GetCommentsQueryVariables {
|
39
|
+
commentableId: string;
|
40
|
+
commentableType: string;
|
41
|
+
orderBy: string | null;
|
42
|
+
}
|
43
|
+
|
44
|
+
export interface GetCommentsQuery {
|
45
|
+
session: AddCommentFormSessionFragment & {
|
46
|
+
user: {
|
47
|
+
name: string,
|
48
|
+
avatarUrl: string,
|
49
|
+
organizationName: string,
|
50
|
+
} | null,
|
51
|
+
} | null;
|
52
|
+
commentable: AddCommentFormCommentableFragment & {
|
53
|
+
acceptsNewComments: boolean,
|
54
|
+
commentsHaveAlignment: boolean,
|
55
|
+
commentsHaveVotes: boolean,
|
56
|
+
comments: Array< CommentThreadFragment & CommentFragment & CommentDataFragment & UpVoteFragment & DownVoteFragment & {
|
57
|
+
id: string,
|
58
|
+
} >,
|
59
|
+
};
|
60
|
+
}
|
61
|
+
|
62
|
+
export interface AddCommentFormCommentableFragment {
|
63
|
+
id: string;
|
64
|
+
type: string;
|
65
|
+
}
|
66
|
+
|
67
|
+
export interface AddCommentFormSessionFragment {
|
68
|
+
verifiedUserGroups: Array< {
|
69
|
+
id: string,
|
70
|
+
name: string,
|
71
|
+
} >;
|
72
|
+
}
|
73
|
+
|
74
|
+
export interface CommentDataFragment extends UpVoteFragment, DownVoteFragment {
|
75
|
+
id: string;
|
76
|
+
sgid: string;
|
77
|
+
type: string;
|
78
|
+
body: string;
|
79
|
+
createdAt: string;
|
80
|
+
author: {
|
81
|
+
name: string,
|
82
|
+
avatarUrl: string,
|
83
|
+
};
|
84
|
+
hasComments: boolean;
|
85
|
+
acceptsNewComments: boolean;
|
86
|
+
alignment: number | null;
|
87
|
+
alreadyReported: boolean;
|
88
|
+
}
|
89
|
+
|
90
|
+
export interface CommentThreadFragment extends CommentFragment, CommentDataFragment, UpVoteFragment, DownVoteFragment {
|
91
|
+
author: {
|
92
|
+
name: string,
|
93
|
+
avatarUrl: string
|
94
|
+
};
|
95
|
+
hasComments: boolean;
|
96
|
+
}
|
97
|
+
|
98
|
+
export interface CommentFragment extends CommentDataFragment, UpVoteFragment, DownVoteFragment {
|
99
|
+
comments: Array< CommentDataFragment & UpVoteFragment & DownVoteFragment & {
|
100
|
+
comments: Array< CommentDataFragment & UpVoteFragment & DownVoteFragment & {
|
101
|
+
comments: Array<CommentDataFragment & UpVoteFragment & DownVoteFragment>,
|
102
|
+
} >,
|
103
|
+
} >;
|
104
|
+
}
|
105
|
+
|
106
|
+
export interface DownVoteFragment {
|
107
|
+
id: string;
|
108
|
+
downVotes: number;
|
109
|
+
downVoted: boolean;
|
110
|
+
upVoted: boolean;
|
111
|
+
}
|
112
|
+
|
113
|
+
export interface UpVoteFragment {
|
114
|
+
id: string;
|
115
|
+
upVotes: number;
|
116
|
+
upVoted: boolean;
|
117
|
+
downVoted: boolean;
|
118
|
+
}
|
119
|
+
/* tslint:enable */
|
data/config/locales/eu.yml
CHANGED
@@ -1,9 +1,18 @@
|
|
1
1
|
eu:
|
2
|
+
activerecord:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
cannot_have_comments: ezin zaio iruzkinik egin
|
2
6
|
decidim:
|
3
7
|
comments:
|
4
8
|
comment_notification_mailer:
|
9
|
+
comment_created:
|
10
|
+
new_comment_html: 'Iruzkin berri bat dago, <b>%{commenter}</b> iruzkingilearena, hemen: <b>%{commentable_link}</b>'
|
5
11
|
hello: Kaixo, %{name},
|
12
|
+
manage_email_subscriptions_html: 'Halako mezurik jaso nahi ez baduzu, aldatu konfigurazioa hemen: %{link}.'
|
6
13
|
notifications_settings_link: jakinarazpenen konfigurazio-orria
|
14
|
+
reply_created:
|
15
|
+
new_reply_html: 'Iruzkin berri bat dago, <b>%{commenter}</b> iruzkingilearena, hemen: <b>%{commentable_link}</b>'
|
7
16
|
mailer:
|
8
17
|
comment_notification:
|
9
18
|
comment_created:
|
@@ -12,6 +21,7 @@ eu:
|
|
12
21
|
subject: Zure iruzkinetako bati erantzuna eman diote
|
13
22
|
components:
|
14
23
|
add_comment_form:
|
24
|
+
account_message: '<a href="%{sign_in_url}">Sartu zure kontuarekin</a> o <a href="%{sign_up_url}">erregistratu</a> zure iruzkina egiteko. '
|
15
25
|
form:
|
16
26
|
body:
|
17
27
|
label: Iruzkina
|
@@ -19,23 +29,37 @@ eu:
|
|
19
29
|
form_error: Testua behar da, eta ezin du izan %{length} karaktere baino gehiago.
|
20
30
|
submit: Bidali
|
21
31
|
user_group_id:
|
22
|
-
label: '
|
32
|
+
label: 'Egin iruzkina honako honen gisa:'
|
23
33
|
opinion:
|
24
34
|
neutral: Neutrala
|
25
|
-
title:
|
35
|
+
title: Egin hemen zure iruzkina
|
26
36
|
comment:
|
27
37
|
alignment:
|
28
38
|
against: Aurka
|
29
39
|
in_favor: Alde
|
30
40
|
reply: Erantzuna
|
41
|
+
report:
|
42
|
+
action: Salatu
|
43
|
+
already_reported: Eduki hau jada salatuta dago, eta administratzaile batek berrikusiko du.
|
44
|
+
close: Itxi
|
45
|
+
description: Eduki hau desegokia da?
|
46
|
+
details: iruzkin gehigarriak
|
47
|
+
reasons:
|
48
|
+
does_not_belong: Bertan badago legez kontrako jardunik, suizidio-mehatxurik, informazio pertsonalik edo beste zernahi, zure ustez %{organization_name}-ri ez dagokionik.
|
49
|
+
offensive: Bertan badago arrazakeriarik, sexismorik, irainik, eraso pertsonalik, heriotza-mehatxurik, suizidio-eskaerarik edo beste edozein eratako gorroto-diskurtsorik.
|
50
|
+
spam: Bertan badago clickbait-ik, publizitaterik edo iruzurrik.
|
51
|
+
title: Salatu arazo bat
|
31
52
|
comment_order_selector:
|
32
53
|
order:
|
33
|
-
best_rated: Balorazio
|
54
|
+
best_rated: Balorazio hoberenak
|
34
55
|
most_discussed: Eztabaidatuenak
|
35
|
-
older:
|
36
|
-
recent:
|
56
|
+
older: Zaharrenak
|
57
|
+
recent: Berrienak
|
37
58
|
title: 'Ordenatu honen arabera:'
|
59
|
+
comment_thread:
|
60
|
+
title: 'Solasaldia honekin: %{authorName}'
|
38
61
|
comments:
|
62
|
+
blocked_comments_warning: Oraingo faseko iruzkinak desaktibatuta daude, baina aurreko faseetako iruzkinak irakur ditzakezu.
|
39
63
|
loading: Iruzkinak kargatzen...
|
40
64
|
title: "%{count} iruzkin"
|
41
65
|
featured_comment:
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-comments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-04-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: decidim-core
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.0.
|
21
|
+
version: 0.0.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.0.
|
28
|
+
version: 0.0.7
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rails
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,14 +60,14 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - '='
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 0.0.
|
63
|
+
version: 0.0.7
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.0.
|
70
|
+
version: 0.0.7
|
71
71
|
description: Pluggable comments system for some components.
|
72
72
|
email:
|
73
73
|
- josepjaume@gmail.com
|
@@ -86,50 +86,48 @@ files:
|
|
86
86
|
- app/commands/decidim/comments/create_comment.rb
|
87
87
|
- app/commands/decidim/comments/vote_comment.rb
|
88
88
|
- app/forms/decidim/comments/comment_form.rb
|
89
|
-
- app/frontend/application/apollo_client.
|
90
|
-
- app/frontend/application/application.component.
|
91
|
-
- app/frontend/application/application.component.
|
92
|
-
- app/frontend/application/icon.component.
|
93
|
-
- app/frontend/application/icon.component.
|
94
|
-
- app/frontend/comments/add_comment_form.component.
|
95
|
-
- app/frontend/comments/add_comment_form.component.
|
96
|
-
- app/frontend/comments/
|
97
|
-
- app/frontend/comments/
|
98
|
-
- app/frontend/comments/
|
99
|
-
- app/frontend/comments/
|
100
|
-
- app/frontend/comments/
|
101
|
-
- app/frontend/comments/
|
102
|
-
- app/frontend/comments/
|
103
|
-
- app/frontend/comments/
|
104
|
-
- app/frontend/comments/
|
105
|
-
- app/frontend/comments/
|
106
|
-
- app/frontend/comments/
|
107
|
-
- app/frontend/comments/
|
108
|
-
- app/frontend/comments/
|
109
|
-
- app/frontend/comments/
|
110
|
-
- app/frontend/
|
111
|
-
- app/frontend/
|
112
|
-
- app/frontend/
|
113
|
-
- app/frontend/
|
114
|
-
- app/frontend/
|
115
|
-
- app/frontend/
|
116
|
-
- app/frontend/
|
117
|
-
- app/frontend/
|
118
|
-
- app/frontend/
|
119
|
-
- app/frontend/
|
120
|
-
- app/frontend/
|
121
|
-
- app/frontend/comments
|
122
|
-
- app/frontend/
|
123
|
-
- app/frontend/
|
124
|
-
- app/frontend/
|
125
|
-
- app/frontend/support/
|
126
|
-
- app/frontend/support/
|
127
|
-
- app/frontend/support/
|
128
|
-
- app/frontend/support/
|
129
|
-
- app/frontend/support/
|
130
|
-
- app/frontend/support/
|
131
|
-
- app/frontend/support/resolve_graphql_query.js
|
132
|
-
- app/frontend/support/stub_component.js
|
89
|
+
- app/frontend/application/apollo_client.ts
|
90
|
+
- app/frontend/application/application.component.test.tsx
|
91
|
+
- app/frontend/application/application.component.tsx
|
92
|
+
- app/frontend/application/icon.component.test.tsx
|
93
|
+
- app/frontend/application/icon.component.tsx
|
94
|
+
- app/frontend/comments/add_comment_form.component.test.tsx
|
95
|
+
- app/frontend/comments/add_comment_form.component.tsx
|
96
|
+
- app/frontend/comments/comment.component.test.tsx
|
97
|
+
- app/frontend/comments/comment.component.tsx
|
98
|
+
- app/frontend/comments/comment_order_selector.component.test.tsx
|
99
|
+
- app/frontend/comments/comment_order_selector.component.tsx
|
100
|
+
- app/frontend/comments/comment_thread.component.test.tsx
|
101
|
+
- app/frontend/comments/comment_thread.component.tsx
|
102
|
+
- app/frontend/comments/comments.component.test.tsx
|
103
|
+
- app/frontend/comments/comments.component.tsx
|
104
|
+
- app/frontend/comments/down_vote_button.component.test.tsx
|
105
|
+
- app/frontend/comments/down_vote_button.component.tsx
|
106
|
+
- app/frontend/comments/up_vote_button.component.test.tsx
|
107
|
+
- app/frontend/comments/up_vote_button.component.tsx
|
108
|
+
- app/frontend/comments/vote_button.component.tsx
|
109
|
+
- app/frontend/comments/vote_button_component.test.tsx
|
110
|
+
- app/frontend/entry.ts
|
111
|
+
- app/frontend/fragments/add_comment_form_commentable.fragment.graphql
|
112
|
+
- app/frontend/fragments/add_comment_form_session.fragment.graphql
|
113
|
+
- app/frontend/fragments/comment.fragment.graphql
|
114
|
+
- app/frontend/fragments/comment_data.fragment.graphql
|
115
|
+
- app/frontend/fragments/comment_thread.fragment.graphql
|
116
|
+
- app/frontend/fragments/down_vote_button.fragment.graphql
|
117
|
+
- app/frontend/fragments/up_vote_button.fragment.graphql
|
118
|
+
- app/frontend/mutations/add_comment.mutation.graphql
|
119
|
+
- app/frontend/mutations/down_vote.mutation.graphql
|
120
|
+
- app/frontend/mutations/up_vote.mutation.graphql
|
121
|
+
- app/frontend/queries/comments.query.graphql
|
122
|
+
- app/frontend/support/asset_url.ts
|
123
|
+
- app/frontend/support/generate_comments_data.ts
|
124
|
+
- app/frontend/support/generate_user_data.ts
|
125
|
+
- app/frontend/support/generate_user_group_data.ts
|
126
|
+
- app/frontend/support/graphql_transformer.js
|
127
|
+
- app/frontend/support/load_translations.ts
|
128
|
+
- app/frontend/support/require_all.ts
|
129
|
+
- app/frontend/support/resolve_graphql_query.ts
|
130
|
+
- app/frontend/support/schema.ts
|
133
131
|
- app/mailers/decidim/comments/comment_notification_mailer.rb
|
134
132
|
- app/models/decidim/comments/abilities/admin_user.rb
|
135
133
|
- app/models/decidim/comments/abilities/process_admin_user.rb
|
@@ -188,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
186
|
version: '0'
|
189
187
|
requirements: []
|
190
188
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.6.
|
189
|
+
rubygems_version: 2.6.11
|
192
190
|
signing_key:
|
193
191
|
specification_version: 4
|
194
192
|
summary: Pluggable comments system for some components.
|
@@ -1,37 +0,0 @@
|
|
1
|
-
import { Component, PropTypes } from 'react';
|
2
|
-
import { ApolloProvider } from 'react-apollo';
|
3
|
-
import { I18n } from 'react-i18nify';
|
4
|
-
import moment from 'moment';
|
5
|
-
|
6
|
-
import apolloClient from './apollo_client';
|
7
|
-
|
8
|
-
/**
|
9
|
-
* Wrapper component for all React applications using Apollo
|
10
|
-
* @class
|
11
|
-
* @augments Component
|
12
|
-
*/
|
13
|
-
export default class Application extends Component {
|
14
|
-
constructor(props) {
|
15
|
-
const { locale } = props;
|
16
|
-
|
17
|
-
I18n.setLocale(locale);
|
18
|
-
moment.locale(locale);
|
19
|
-
|
20
|
-
super(props);
|
21
|
-
}
|
22
|
-
|
23
|
-
render() {
|
24
|
-
const { children } = this.props;
|
25
|
-
|
26
|
-
return (
|
27
|
-
<ApolloProvider client={apolloClient}>
|
28
|
-
{children}
|
29
|
-
</ApolloProvider>
|
30
|
-
);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
Application.propTypes = {
|
35
|
-
children: PropTypes.element.isRequired,
|
36
|
-
locale: PropTypes.string.isRequired
|
37
|
-
};
|
@@ -1,33 +0,0 @@
|
|
1
|
-
import { shallow } from 'enzyme';
|
2
|
-
import { I18n } from 'react-i18nify';
|
3
|
-
import moment from 'moment';
|
4
|
-
|
5
|
-
import Application from './application.component';
|
6
|
-
|
7
|
-
describe('<Application />', () => {
|
8
|
-
afterEach(() => {
|
9
|
-
I18n.setLocale('en');
|
10
|
-
});
|
11
|
-
|
12
|
-
it("should set I18n locale to locale prop", () => {
|
13
|
-
sinon.spy(I18n, 'setLocale');
|
14
|
-
const locale = "ca";
|
15
|
-
shallow(
|
16
|
-
<Application locale={locale}>
|
17
|
-
<div>My application</div>
|
18
|
-
</Application>
|
19
|
-
);
|
20
|
-
expect(I18n.setLocale).to.have.been.calledWith(locale);
|
21
|
-
});
|
22
|
-
|
23
|
-
it("should set moment locale to locale prop", () => {
|
24
|
-
sinon.spy(moment, 'locale');
|
25
|
-
const locale = "ca";
|
26
|
-
shallow(
|
27
|
-
<Application locale={locale}>
|
28
|
-
<div>My application</div>
|
29
|
-
</Application>
|
30
|
-
);
|
31
|
-
expect(moment.locale).to.have.been.calledWith(locale);
|
32
|
-
});
|
33
|
-
});
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { PropTypes } from 'react';
|
2
|
-
|
3
|
-
import assetUrl from '../support/asset_url';
|
4
|
-
|
5
|
-
const Icon = ({ name, iconExtraClassName }) => {
|
6
|
-
if (navigator.userAgent.match(/PhantomJS/)) {
|
7
|
-
return <span className={`icon ${iconExtraClassName} ${name}`}>{name}</span>;
|
8
|
-
}
|
9
|
-
|
10
|
-
return (
|
11
|
-
<svg className={`icon ${iconExtraClassName} ${name}`}>
|
12
|
-
<use xmlnsXlink="http://www.w3.org/1999/xlink" xlinkHref={`${assetUrl('icons.svg')}#${name}`} />
|
13
|
-
</svg>
|
14
|
-
);
|
15
|
-
};
|
16
|
-
|
17
|
-
Icon.defaultProps = {
|
18
|
-
iconExtraClassName: 'icon--before'
|
19
|
-
};
|
20
|
-
|
21
|
-
Icon.propTypes = {
|
22
|
-
name: PropTypes.string.isRequired,
|
23
|
-
iconExtraClassName: PropTypes.string.isRequired
|
24
|
-
};
|
25
|
-
|
26
|
-
export default Icon;
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import { shallow, mount } from 'enzyme';
|
2
|
-
|
3
|
-
import Icon from './icon.component';
|
4
|
-
|
5
|
-
describe("<Icon /", () => {
|
6
|
-
beforeEach(() => {
|
7
|
-
window.DecidimComments = {
|
8
|
-
assets: {
|
9
|
-
'icons.svg': '/assets/icons.svg'
|
10
|
-
}
|
11
|
-
};
|
12
|
-
})
|
13
|
-
|
14
|
-
describe("if navigator user agent is not PhantomJS", () => {
|
15
|
-
let currentNavigator = null;
|
16
|
-
|
17
|
-
beforeEach(() => {
|
18
|
-
currentNavigator = window.navigator;
|
19
|
-
window.navigator = {
|
20
|
-
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36"
|
21
|
-
};
|
22
|
-
});
|
23
|
-
|
24
|
-
it("should render a svg with class defined by prop className", () => {
|
25
|
-
const wrapper = shallow(<Icon name="icon-thumb-down" />);
|
26
|
-
expect(wrapper.find('svg.icon-thumb-down')).to.be.present();
|
27
|
-
});
|
28
|
-
|
29
|
-
it("should render a svg icon using the 'icons.svg' url and name", () => {
|
30
|
-
const wrapper = shallow(<Icon name="icon-thumb-up" />);
|
31
|
-
expect(wrapper.find('svg use')).to.have.attr('xlink:href').equal('/assets/icons.svg#icon-thumb-up');
|
32
|
-
});
|
33
|
-
|
34
|
-
afterEach(() => {
|
35
|
-
window.navigator = currentNavigator;
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
it("should render a simple span with the icon name", () => {
|
40
|
-
const wrapper = shallow(<Icon name="icon-thumb-up" />);
|
41
|
-
expect(wrapper.find('span')).to.have.text('icon-thumb-up');
|
42
|
-
});
|
43
|
-
|
44
|
-
it("should have a default prop iconExtraClassName with value 'icon--before'", () => {
|
45
|
-
const wrapper = mount(<Icon name="icon-thumb-up" />);
|
46
|
-
expect(wrapper).to.have.prop('iconExtraClassName').equal('icon--before');
|
47
|
-
});
|
48
|
-
|
49
|
-
it("should render the svg with an extra class defined by iconExtraClassName", () => {
|
50
|
-
const wrapper = mount(<Icon name="icon-thumb-up" iconExtraClassName="icon--small" />);
|
51
|
-
expect(wrapper.find('.icon--small')).to.be.present();
|
52
|
-
});
|
53
|
-
});
|