decidim-comments 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
});
|