solidus_stripe 1.0.0

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.
Files changed (34) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +35 -0
  3. data/.gem_release.yml +8 -0
  4. data/.gitignore +11 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +319 -0
  7. data/.travis.yml +28 -0
  8. data/Gemfile +25 -0
  9. data/LICENSE.md +26 -0
  10. data/README.md +115 -0
  11. data/Rakefile +23 -0
  12. data/app/models/spree/payment_method/stripe_credit_card.rb +136 -0
  13. data/bin/rails +7 -0
  14. data/db/migrate/20181010123508_update_stripe_payment_method_type_to_credit_card.rb +21 -0
  15. data/db/seeds.rb +26 -0
  16. data/lib/assets/stylesheets/spree/frontend/solidus_stripe.scss +6 -0
  17. data/lib/generators/solidus_stripe/install/install_generator.rb +46 -0
  18. data/lib/solidus_stripe.rb +7 -0
  19. data/lib/solidus_stripe/engine.rb +23 -0
  20. data/lib/solidus_stripe/version.rb +5 -0
  21. data/lib/tasks/solidus_stripe/db/seed.rake +14 -0
  22. data/lib/views/api/spree/api/payments/source_views/_stripe.json.jbuilder +3 -0
  23. data/lib/views/backend/spree/admin/log_entries/_stripe.html.erb +28 -0
  24. data/lib/views/backend/spree/admin/payments/source_forms/_stripe.html.erb +1 -0
  25. data/lib/views/backend/spree/admin/payments/source_views/_stripe.html.erb +1 -0
  26. data/lib/views/frontend/spree/checkout/existing_payment/_stripe.html.erb +1 -0
  27. data/lib/views/frontend/spree/checkout/payment/_stripe.html.erb +6 -0
  28. data/lib/views/frontend/spree/checkout/payment/v2/_javascript.html.erb +77 -0
  29. data/lib/views/frontend/spree/checkout/payment/v3/_stripe.html.erb +133 -0
  30. data/solidus_stripe.gemspec +45 -0
  31. data/spec/features/stripe_checkout_spec.rb +279 -0
  32. data/spec/models/spree/payment_method/stripe_credit_card_spec.rb +205 -0
  33. data/spec/spec_helper.rb +20 -0
  34. metadata +264 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d8af7c603e46ef714bf95c986b68ed93a5658a58e6f8f35b5ea2fa056332dbd1
4
+ data.tar.gz: 289927edcb12bb159257e8095641e6f3a67c9b50c3fcfd4feed003d7090717ce
5
+ SHA512:
6
+ metadata.gz: 60356f5385e7faa6070a810d713f2eaeaac20cceb06d0afab18adb323ed1c3e991ac5e40816f482558a65a5790f2448e3e5d17fb6cecfc13b32107cfed58b019
7
+ data.tar.gz: abff53f85efcc1cd0a373b997432ec8a38b6dd94fd153f296cf8fe564fbb13d851f67d4c480badcce82fa752167b4c997c0d84376b3f1ed8fd5e3a8ebac7feb8
@@ -0,0 +1,35 @@
1
+ version: 2.1
2
+
3
+ orbs:
4
+ # Always take the latest version of the orb, this allows us to
5
+ # run specs against Solidus supported versions only without the need
6
+ # to change this configuration every time a Solidus version is released
7
+ # or goes EOL.
8
+ solidusio_extensions: solidusio/extensions@volatile
9
+
10
+ jobs:
11
+ run-specs-with-postgres:
12
+ executor: solidusio_extensions/postgres
13
+ steps:
14
+ - solidusio_extensions/run-tests
15
+ run-specs-with-mysql:
16
+ executor: solidusio_extensions/mysql
17
+ steps:
18
+ - solidusio_extensions/run-tests
19
+
20
+ workflows:
21
+ "Run specs on supported Solidus versions":
22
+ jobs:
23
+ - run-specs-with-postgres
24
+ - run-specs-with-mysql
25
+ "Weekly run specs against master":
26
+ triggers:
27
+ - schedule:
28
+ cron: "0 0 * * 4" # every Thursday
29
+ filters:
30
+ branches:
31
+ only:
32
+ - master
33
+ jobs:
34
+ - run-specs-with-postgres
35
+ - run-specs-with-mysql
@@ -0,0 +1,8 @@
1
+ bump:
2
+ file: 'lib/solidus_stripe/version.rb'
3
+ message: Bump Solidus Stripe to %{version}
4
+ commit: true
5
+ push: true
6
+
7
+ tag:
8
+ push: true
@@ -0,0 +1,11 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ tmp
6
+ spec/dummy
7
+ Gemfile.lock
8
+ .rvmrc
9
+ coverage
10
+ .ruby-version
11
+ pkg
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,319 @@
1
+ # Relaxed.Ruby.Style
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - 'spec/dummy/**/*'
6
+ - 'bin/**'
7
+ TargetRubyVersion: 2.4
8
+
9
+ # Sometimes I believe this reads better
10
+ # This also causes spacing issues on multi-line fixes
11
+ Style/BracesAroundHashParameters:
12
+ Enabled: false
13
+
14
+ # We use class vars and will have to continue doing so for compatability
15
+ Style/ClassVars:
16
+ Enabled: false
17
+
18
+ # We need these names for backwards compatability
19
+ Naming/PredicateName:
20
+ Enabled: false
21
+
22
+ Naming/AccessorMethodName:
23
+ Enabled: false
24
+
25
+ # This has been used for customization
26
+ Style/MutableConstant:
27
+ Enabled: false
28
+
29
+ Style/ClassAndModuleChildren:
30
+ Enabled: false
31
+
32
+ Style/EmptyElse:
33
+ Enabled: false
34
+
35
+ Style/GuardClause:
36
+ Enabled: false
37
+
38
+ Style/Next:
39
+ Enabled: false
40
+
41
+ Style/NumericPredicate:
42
+ Enabled: false
43
+
44
+ Style/WordArray:
45
+ Enabled: false
46
+
47
+ Style/ConditionalAssignment:
48
+ Enabled: false
49
+
50
+ Performance/Count:
51
+ Enabled: false
52
+
53
+ Style/RaiseArgs:
54
+ Enabled: false
55
+
56
+ Naming/BinaryOperatorParameterName:
57
+ Enabled: false
58
+
59
+ # We can use good judgement here
60
+ Style/RegexpLiteral:
61
+ Enabled: false
62
+
63
+ # Unicode comments are useful
64
+ Style/AsciiComments:
65
+ Enabled: false
66
+
67
+ Layout/EndAlignment:
68
+ Enabled: false
69
+
70
+ Layout/ElseAlignment:
71
+ Enabled: false
72
+
73
+ Layout/IndentationWidth:
74
+ Enabled: false
75
+
76
+ Layout/AlignParameters:
77
+ Enabled: false
78
+
79
+ Layout/ClosingParenthesisIndentation:
80
+ Enabled: false
81
+
82
+ Layout/MultilineMethodCallIndentation:
83
+ Enabled: false
84
+
85
+ Layout/IndentFirstArrayElement:
86
+ Enabled: false
87
+
88
+ Layout/IndentFirstHashElement:
89
+ Enabled: false
90
+
91
+ Layout/AlignHash:
92
+ Enabled: false
93
+
94
+ Style/TrailingCommaInArguments:
95
+ Enabled: false
96
+
97
+ Style/TrailingCommaInArrayLiteral:
98
+ Enabled: false
99
+
100
+ Style/TrailingCommaInHashLiteral:
101
+ Enabled: false
102
+
103
+ # Symbol Arrays are ok and the %i syntax widely unknown
104
+ Style/SymbolArray:
105
+ Enabled: false
106
+
107
+ Rails/DynamicFindBy:
108
+ Whitelist:
109
+ - find_by_param
110
+ - find_by_param!
111
+
112
+ # We use a lot of
113
+ #
114
+ # expect {
115
+ # something
116
+ # }.to { happen }
117
+ #
118
+ # syntax in the specs files.
119
+ Lint/AmbiguousBlockAssociation:
120
+ Exclude:
121
+ - '*/spec/**/*'
122
+ - 'spec/**/*' # For the benefit of apps that inherit from this config
123
+
124
+ # We use eval to add common_spree_dependencies into the Gemfiles of each of our gems
125
+ Security/Eval:
126
+ Exclude:
127
+ - 'Gemfile'
128
+ - 'common_spree_dependencies.rb'
129
+ - '*/Gemfile'
130
+
131
+ Naming/VariableNumber:
132
+ Enabled: false
133
+
134
+ # Write empty methods as you wish.
135
+ Style/EmptyMethod:
136
+ Enabled: false
137
+
138
+ # From http://relaxed.ruby.style/
139
+
140
+ Style/Alias:
141
+ Enabled: false
142
+ StyleGuide: http://relaxed.ruby.style/#stylealias
143
+
144
+ Style/BeginBlock:
145
+ Enabled: false
146
+ StyleGuide: http://relaxed.ruby.style/#stylebeginblock
147
+
148
+ Style/BlockDelimiters:
149
+ Enabled: false
150
+ StyleGuide: http://relaxed.ruby.style/#styleblockdelimiters
151
+
152
+ Style/Documentation:
153
+ Enabled: false
154
+ StyleGuide: http://relaxed.ruby.style/#styledocumentation
155
+
156
+ Layout/DotPosition:
157
+ Enabled: false
158
+ StyleGuide: http://relaxed.ruby.style/#styledotposition
159
+
160
+ Style/DoubleNegation:
161
+ Enabled: false
162
+ StyleGuide: http://relaxed.ruby.style/#styledoublenegation
163
+
164
+ Style/EndBlock:
165
+ Enabled: false
166
+ StyleGuide: http://relaxed.ruby.style/#styleendblock
167
+
168
+ Style/FormatString:
169
+ Enabled: false
170
+ StyleGuide: http://relaxed.ruby.style/#styleformatstring
171
+
172
+ Style/IfUnlessModifier:
173
+ Enabled: false
174
+ StyleGuide: http://relaxed.ruby.style/#styleifunlessmodifier
175
+
176
+ Style/Lambda:
177
+ Enabled: false
178
+ StyleGuide: http://relaxed.ruby.style/#stylelambda
179
+
180
+ Style/ModuleFunction:
181
+ Enabled: false
182
+ StyleGuide: http://relaxed.ruby.style/#stylemodulefunction
183
+
184
+ Style/MultilineBlockChain:
185
+ Enabled: false
186
+ StyleGuide: http://relaxed.ruby.style/#stylemultilineblockchain
187
+
188
+ Style/NegatedIf:
189
+ Enabled: false
190
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedif
191
+
192
+ Style/NegatedWhile:
193
+ Enabled: false
194
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedwhile
195
+
196
+ Style/ParallelAssignment:
197
+ Enabled: false
198
+ StyleGuide: http://relaxed.ruby.style/#styleparallelassignment
199
+
200
+ Style/PercentLiteralDelimiters:
201
+ Enabled: false
202
+ StyleGuide: http://relaxed.ruby.style/#stylepercentliteraldelimiters
203
+
204
+ Style/PerlBackrefs:
205
+ Enabled: false
206
+ StyleGuide: http://relaxed.ruby.style/#styleperlbackrefs
207
+
208
+ Style/Semicolon:
209
+ Enabled: false
210
+ StyleGuide: http://relaxed.ruby.style/#stylesemicolon
211
+
212
+ Style/SignalException:
213
+ Enabled: false
214
+ StyleGuide: http://relaxed.ruby.style/#stylesignalexception
215
+
216
+ Style/SingleLineBlockParams:
217
+ Enabled: false
218
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelineblockparams
219
+
220
+ Style/SingleLineMethods:
221
+ Enabled: false
222
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelinemethods
223
+
224
+ Layout/SpaceBeforeBlockBraces:
225
+ Enabled: false
226
+ StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
227
+
228
+ Layout/SpaceInsideParens:
229
+ Enabled: false
230
+ StyleGuide: http://relaxed.ruby.style/#stylespaceinsideparens
231
+
232
+ Style/SpecialGlobalVars:
233
+ Enabled: false
234
+ StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
235
+
236
+ Style/StringLiterals:
237
+ Enabled: false
238
+ StyleGuide: http://relaxed.ruby.style/#stylestringliterals
239
+
240
+ Style/SymbolProc:
241
+ Enabled: false
242
+
243
+ Style/TernaryParentheses:
244
+ Enabled: false
245
+
246
+ Style/WhileUntilModifier:
247
+ Enabled: false
248
+ StyleGuide: http://relaxed.ruby.style/#stylewhileuntilmodifier
249
+
250
+ Lint/AmbiguousRegexpLiteral:
251
+ Enabled: false
252
+ StyleGuide: http://relaxed.ruby.style/#lintambiguousregexpliteral
253
+
254
+ Lint/AssignmentInCondition:
255
+ Enabled: false
256
+ StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition
257
+
258
+ Metrics/AbcSize:
259
+ Enabled: false
260
+
261
+ Metrics/BlockNesting:
262
+ Enabled: false
263
+
264
+ Metrics/ClassLength:
265
+ Enabled: false
266
+
267
+ Metrics/ModuleLength:
268
+ Enabled: false
269
+
270
+ Metrics/BlockLength:
271
+ Enabled: false
272
+
273
+ Metrics/CyclomaticComplexity:
274
+ Enabled: false
275
+
276
+ Metrics/LineLength:
277
+ Enabled: false
278
+
279
+ Metrics/MethodLength:
280
+ Enabled: false
281
+
282
+ Metrics/ParameterLists:
283
+ Enabled: false
284
+
285
+ Metrics/PerceivedComplexity:
286
+ Enabled: false
287
+
288
+ Bundler/OrderedGems:
289
+ Enabled: false
290
+
291
+ Style/NumericLiterals:
292
+ Enabled: false
293
+
294
+ Style/FrozenStringLiteralComment:
295
+ Enabled: true
296
+ EnforcedStyle: always
297
+
298
+ # json.() is idiomatic in jbuilder files
299
+ Style/LambdaCall:
300
+ Enabled: false
301
+
302
+ Naming/UncommunicativeMethodParamName:
303
+ AllowedNames:
304
+ - id
305
+ - to
306
+ - _
307
+
308
+ # Rubocop doesn't understand side-effects
309
+ Style/IdenticalConditionalBranches:
310
+ Enabled: false
311
+
312
+ Naming/MemoizedInstanceVariableName:
313
+ Enabled: false
314
+
315
+ Lint/UselessComparison:
316
+ Enabled: false
317
+
318
+ Lint/HandleExceptions:
319
+ Enabled: false
@@ -0,0 +1,28 @@
1
+ sudo: required
2
+ dist: trusty
3
+ cache: bundler
4
+ language: ruby
5
+ addons:
6
+ chrome: stable
7
+ rvm:
8
+ - 2.5.1
9
+ before_install:
10
+ - mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'travis'@'%';"
11
+ before_script:
12
+ - "export DISPLAY=:99.0"
13
+ - "sh -e /etc/init.d/xvfb start"
14
+ - sleep 3 # give xvfb some time to start
15
+ env:
16
+ matrix:
17
+ - SOLIDUS_BRANCH=v2.4 DB=postgres
18
+ - SOLIDUS_BRANCH=v2.5 DB=postgres
19
+ - SOLIDUS_BRANCH=v2.6 DB=postgres
20
+ - SOLIDUS_BRANCH=v2.7 DB=postgres
21
+ - SOLIDUS_BRANCH=v2.8 DB=postgres
22
+ - SOLIDUS_BRANCH=master DB=postgres
23
+ - SOLIDUS_BRANCH=v2.4 DB=mysql
24
+ - SOLIDUS_BRANCH=v2.5 DB=mysql
25
+ - SOLIDUS_BRANCH=v2.6 DB=mysql
26
+ - SOLIDUS_BRANCH=v2.7 DB=mysql
27
+ - SOLIDUS_BRANCH=v2.8 DB=mysql
28
+ - SOLIDUS_BRANCH=master DB=mysql
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
6
+ gem "solidus", github: "solidusio/solidus", branch: branch
7
+ gem "solidus_auth_devise"
8
+
9
+ group :test do
10
+ if branch == 'master' || branch >= "v2.0"
11
+ gem "rails-controller-testing"
12
+ end
13
+
14
+ gem 'factory_bot', (branch < 'v2.5' ? '4.10.0' : '> 4.10.0')
15
+ end
16
+
17
+ gem 'pg'
18
+ gem 'mysql2'
19
+
20
+ group :development, :test do
21
+ gem "pry-rails"
22
+ gem "ffaker"
23
+ end
24
+
25
+ gemspec
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2014 Spree Commerce Inc. and other contributors.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.