wvanbergen-adyen 0.1.1 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +4 -4
- data/README.rdoc +16 -9
- data/Rakefile +1 -1
- data/adyen.gemspec +22 -13
- data/lib/adyen.rb +5 -5
- data/lib/adyen/form.rb +26 -20
- data/lib/adyen/formatter.rb +1 -1
- data/lib/adyen/matchers.rb +22 -22
- data/lib/adyen/notification.rb +23 -25
- data/lib/adyen/soap.rb +33 -33
- data/spec/adyen_spec.rb +9 -9
- data/spec/form_spec.rb +64 -40
- data/spec/notification_spec.rb +27 -27
- data/tasks/github-gem.rake +124 -74
- metadata +14 -11
data/tasks/github-gem.rake
CHANGED
@@ -5,26 +5,30 @@ require 'date'
|
|
5
5
|
require 'git'
|
6
6
|
|
7
7
|
module GithubGem
|
8
|
-
|
8
|
+
|
9
|
+
# Detects the gemspc file of this project using heuristics.
|
9
10
|
def self.detect_gemspec_file
|
10
11
|
FileList['*.gemspec'].first
|
11
12
|
end
|
12
|
-
|
13
|
+
|
14
|
+
# Detects the main include file of this project using heuristics
|
13
15
|
def self.detect_main_include
|
14
16
|
if detect_gemspec_file =~ /^(\.*)\.gemspec$/ && File.exist?("lib/#{$1}.rb")
|
15
17
|
"lib/#{$1}.rb"
|
16
18
|
elsif FileList['lib/*.rb'].length == 1
|
17
19
|
FileList['lib/*.rb'].first
|
18
20
|
else
|
19
|
-
|
21
|
+
nil
|
20
22
|
end
|
21
23
|
end
|
22
|
-
|
24
|
+
|
23
25
|
class RakeTasks
|
24
|
-
|
26
|
+
|
25
27
|
attr_reader :gemspec, :modified_files, :git
|
26
28
|
attr_accessor :gemspec_file, :task_namespace, :main_include, :root_dir, :spec_pattern, :test_pattern, :remote, :remote_branch, :local_branch
|
27
|
-
|
29
|
+
|
30
|
+
# Initializes the settings, yields itself for configuration
|
31
|
+
# and defines the rake tasks based on the gemspec file.
|
28
32
|
def initialize(task_namespace = :gem)
|
29
33
|
@gemspec_file = GithubGem.detect_gemspec_file
|
30
34
|
@task_namespace = task_namespace
|
@@ -36,17 +40,17 @@ module GithubGem
|
|
36
40
|
@local_branch = 'master'
|
37
41
|
@remote = 'origin'
|
38
42
|
@remote_branch = 'master'
|
39
|
-
|
40
|
-
|
43
|
+
|
41
44
|
yield(self) if block_given?
|
42
45
|
|
43
|
-
@git = Git.open(@root_dir)
|
44
|
-
load_gemspec!
|
46
|
+
@git = Git.open(@root_dir)
|
47
|
+
load_gemspec!
|
45
48
|
define_tasks!
|
46
49
|
end
|
47
|
-
|
50
|
+
|
48
51
|
protected
|
49
|
-
|
52
|
+
|
53
|
+
# Define Unit test tasks
|
50
54
|
def define_test_tasks!
|
51
55
|
require 'rake/testtask'
|
52
56
|
|
@@ -57,11 +61,12 @@ module GithubGem
|
|
57
61
|
t.libs << 'test'
|
58
62
|
end
|
59
63
|
end
|
60
|
-
|
64
|
+
|
61
65
|
desc "Run all unit tests for #{gemspec.name}"
|
62
66
|
task(:test => ['test:basic'])
|
63
67
|
end
|
64
|
-
|
68
|
+
|
69
|
+
# Defines RSpec tasks
|
65
70
|
def define_rspec_tasks!
|
66
71
|
require 'spec/rake/spectask'
|
67
72
|
|
@@ -70,204 +75,249 @@ module GithubGem
|
|
70
75
|
Spec::Rake::SpecTask.new(:basic) do |t|
|
71
76
|
t.spec_files = FileList[spec_pattern]
|
72
77
|
end
|
73
|
-
|
78
|
+
|
74
79
|
desc "Verify all RSpec examples for #{gemspec.name} and output specdoc"
|
75
80
|
Spec::Rake::SpecTask.new(:specdoc) do |t|
|
76
81
|
t.spec_files = FileList[spec_pattern]
|
77
82
|
t.spec_opts << '--format' << 'specdoc' << '--color'
|
78
83
|
end
|
79
|
-
|
84
|
+
|
80
85
|
desc "Run RCov on specs for #{gemspec.name}"
|
81
86
|
Spec::Rake::SpecTask.new(:rcov) do |t|
|
82
87
|
t.spec_files = FileList[spec_pattern]
|
83
88
|
t.rcov = true
|
84
|
-
t.rcov_opts = ['--exclude', '"spec/*,gems/*"', '--rails']
|
85
|
-
end
|
89
|
+
t.rcov_opts = ['--exclude', '"spec/*,gems/*"', '--rails']
|
90
|
+
end
|
86
91
|
end
|
87
|
-
|
92
|
+
|
88
93
|
desc "Verify all RSpec examples for #{gemspec.name} and output specdoc"
|
89
|
-
task(:spec => ['spec:specdoc'])
|
94
|
+
task(:spec => ['spec:specdoc'])
|
90
95
|
end
|
91
|
-
|
96
|
+
|
92
97
|
# Defines the rake tasks
|
93
98
|
def define_tasks!
|
94
|
-
|
99
|
+
|
95
100
|
define_test_tasks! if has_tests?
|
96
101
|
define_rspec_tasks! if has_specs?
|
97
|
-
|
102
|
+
|
98
103
|
namespace(@task_namespace) do
|
99
104
|
desc "Updates the filelist in the gemspec file"
|
100
|
-
task(:manifest) { manifest_task }
|
101
|
-
|
105
|
+
task(:manifest) { manifest_task }
|
106
|
+
|
102
107
|
desc "Builds the .gem package"
|
103
108
|
task(:build => :manifest) { build_task }
|
104
109
|
|
105
110
|
desc "Sets the version of the gem in the gemspec"
|
106
111
|
task(:set_version => [:check_version, :check_current_branch]) { version_task }
|
107
|
-
task(:check_version => :fetch_origin) { check_version_task }
|
108
|
-
|
112
|
+
task(:check_version => :fetch_origin) { check_version_task }
|
113
|
+
|
109
114
|
task(:fetch_origin) { fetch_origin_task }
|
110
|
-
task(:check_current_branch) { check_current_branch_task }
|
115
|
+
task(:check_current_branch) { check_current_branch_task }
|
111
116
|
task(:check_clean_status) { check_clean_status_task }
|
112
117
|
task(:check_not_diverged => :fetch_origin) { check_not_diverged_task }
|
113
|
-
|
118
|
+
|
114
119
|
checks = [:check_current_branch, :check_clean_status, :check_not_diverged, :check_version]
|
115
120
|
checks.unshift('spec:basic') if has_specs?
|
116
121
|
checks.unshift('test:basic') if has_tests?
|
117
122
|
checks.push << [:check_rubyforge] if gemspec.rubyforge_project
|
118
|
-
|
123
|
+
|
119
124
|
desc "Perform all checks that would occur before a release"
|
120
|
-
task(:release_checks => checks)
|
125
|
+
task(:release_checks => checks)
|
121
126
|
|
122
127
|
release_tasks = [:release_checks, :set_version, :build, :github_release]
|
123
128
|
release_tasks << [:rubyforge_release] if gemspec.rubyforge_project
|
124
|
-
|
129
|
+
|
125
130
|
desc "Release a new verison of the gem"
|
126
131
|
task(:release => release_tasks) { release_task }
|
127
|
-
|
132
|
+
|
128
133
|
task(:check_rubyforge) { check_rubyforge_task }
|
129
134
|
task(:rubyforge_release) { rubyforge_release_task }
|
130
135
|
task(:github_release => [:commit_modified_files, :tag_version]) { github_release_task }
|
131
136
|
task(:tag_version) { tag_version_task }
|
132
137
|
task(:commit_modified_files) { commit_modified_files_task }
|
138
|
+
|
139
|
+
desc "Updates the gem release tasks with the latest version on Github"
|
140
|
+
task(:update_tasks) { update_tasks_task }
|
133
141
|
end
|
134
142
|
end
|
135
|
-
|
143
|
+
|
144
|
+
# Updates the files list and test_files list in the gemspec file using the list of files
|
145
|
+
# in the repository and the spec/test file pattern.
|
136
146
|
def manifest_task
|
137
147
|
# Load all the gem's files using "git ls-files"
|
138
148
|
repository_files = git.ls_files.keys
|
139
149
|
test_files = Dir[test_pattern] + Dir[spec_pattern]
|
140
|
-
|
150
|
+
|
141
151
|
update_gemspec(:files, repository_files)
|
142
152
|
update_gemspec(:test_files, repository_files & test_files)
|
143
153
|
end
|
144
|
-
|
154
|
+
|
155
|
+
# Builds the gem
|
145
156
|
def build_task
|
146
157
|
sh "gem build -q #{gemspec_file}"
|
147
158
|
Dir.mkdir('pkg') unless File.exist?('pkg')
|
148
|
-
sh "mv #{gemspec.name}-#{gemspec.version}.gem pkg/#{gemspec.name}-#{gemspec.version}.gem"
|
159
|
+
sh "mv #{gemspec.name}-#{gemspec.version}.gem pkg/#{gemspec.name}-#{gemspec.version}.gem"
|
149
160
|
end
|
150
|
-
|
161
|
+
|
162
|
+
# Updates the version number in the gemspec file, the VERSION constant in the main
|
163
|
+
# include file and the contents of the VERSION file.
|
151
164
|
def version_task
|
152
165
|
update_gemspec(:version, ENV['VERSION']) if ENV['VERSION']
|
153
166
|
update_gemspec(:date, Date.today)
|
154
|
-
|
167
|
+
|
155
168
|
update_version_file(gemspec.version)
|
156
169
|
update_version_constant(gemspec.version)
|
157
170
|
end
|
158
|
-
|
171
|
+
|
159
172
|
def check_version_task
|
160
173
|
raise "#{ENV['VERSION']} is not a valid version number!" if ENV['VERSION'] && !Gem::Version.correct?(ENV['VERSION'])
|
161
174
|
proposed_version = Gem::Version.new(ENV['VERSION'] || gemspec.version)
|
162
175
|
# Loads the latest version number using the created tags
|
163
|
-
newest_version = git.tags.map { |tag| tag.name.split('-').last }.compact.map { |v| Gem::Version.new(v) }.max
|
176
|
+
newest_version = git.tags.map { |tag| tag.name.split('-').last }.compact.map { |v| Gem::Version.new(v) }.max
|
164
177
|
raise "This version (#{proposed_version}) is not higher than the highest tagged version (#{newest_version})" if newest_version && newest_version >= proposed_version
|
165
178
|
end
|
166
|
-
|
179
|
+
|
180
|
+
# Checks whether the current branch is not diverged from the remote branch
|
167
181
|
def check_not_diverged_task
|
168
182
|
raise "The current branch is diverged from the remote branch!" if git.log.between('HEAD', git.branches["#{remote}/#{remote_branch}"].gcommit).any?
|
169
183
|
end
|
170
|
-
|
184
|
+
|
185
|
+
# Checks whether the repository status ic clean
|
171
186
|
def check_clean_status_task
|
172
|
-
|
187
|
+
raise "The current working copy contains modifications" if git.status.changed.any?
|
173
188
|
end
|
174
|
-
|
189
|
+
|
190
|
+
# Checks whether the current branch is correct
|
175
191
|
def check_current_branch_task
|
176
192
|
raise "Currently not on #{local_branch} branch!" unless git.branch.name == local_branch.to_s
|
177
193
|
end
|
178
|
-
|
194
|
+
|
195
|
+
# Fetches the latest updates from Github
|
179
196
|
def fetch_origin_task
|
180
197
|
git.fetch('origin')
|
181
198
|
end
|
182
|
-
|
199
|
+
|
200
|
+
# Commits every file that has been changed by the release task.
|
183
201
|
def commit_modified_files_task
|
184
202
|
if modified_files.any?
|
185
203
|
modified_files.each { |file| git.add(file) }
|
186
204
|
git.commit("Released #{gemspec.name} gem version #{gemspec.version}")
|
187
205
|
end
|
188
206
|
end
|
189
|
-
|
207
|
+
|
208
|
+
# Adds a tag for the released version
|
190
209
|
def tag_version_task
|
191
210
|
git.add_tag("#{gemspec.name}-#{gemspec.version}")
|
192
211
|
end
|
193
|
-
|
212
|
+
|
213
|
+
# Pushes the changes and tag to github
|
194
214
|
def github_release_task
|
195
215
|
git.push(remote, remote_branch, true)
|
196
216
|
end
|
197
|
-
|
217
|
+
|
218
|
+
# Checks whether Rubyforge is configured properly
|
198
219
|
def check_rubyforge_task
|
199
|
-
|
220
|
+
# Login no longer necessary when using rubyforge 2.0.0 gem
|
221
|
+
# raise "Could not login on rubyforge!" unless `rubyforge login 2>&1`.strip.empty?
|
200
222
|
output = `rubyforge names`.split("\n")
|
201
223
|
raise "Rubyforge group not found!" unless output.any? { |line| %r[^groups\s*\:.*\b#{Regexp.quote(gemspec.rubyforge_project)}\b.*] =~ line }
|
202
|
-
raise "Rubyforge package not found!" unless output.any? { |line| %r[^packages\s*\:.*\b#{Regexp.quote(gemspec.name)}\b.*] =~ line }
|
224
|
+
raise "Rubyforge package not found!" unless output.any? { |line| %r[^packages\s*\:.*\b#{Regexp.quote(gemspec.name)}\b.*] =~ line }
|
203
225
|
end
|
204
|
-
|
226
|
+
|
227
|
+
# Task to release the .gem file toRubyforge.
|
205
228
|
def rubyforge_release_task
|
206
229
|
sh 'rubyforge', 'add_release', gemspec.rubyforge_project, gemspec.name, gemspec.version.to_s, "pkg/#{gemspec.name}-#{gemspec.version}.gem"
|
207
230
|
end
|
208
|
-
|
231
|
+
|
232
|
+
# Gem release task.
|
233
|
+
# All work is done by the task's dependencies, so just display a release completed message.
|
209
234
|
def release_task
|
210
235
|
puts
|
211
236
|
puts '------------------------------------------------------------'
|
212
237
|
puts "Released #{gemspec.name} version #{gemspec.version}"
|
213
238
|
end
|
214
|
-
|
239
|
+
|
215
240
|
private
|
216
|
-
|
241
|
+
|
242
|
+
# Checks whether this project has any RSpec files
|
217
243
|
def has_specs?
|
218
244
|
FileList[spec_pattern].any?
|
219
245
|
end
|
220
|
-
|
246
|
+
|
247
|
+
# Checks whether this project has any unit test files
|
221
248
|
def has_tests?
|
222
249
|
FileList[test_pattern].any?
|
223
250
|
end
|
224
|
-
|
225
|
-
|
251
|
+
|
226
252
|
# Loads the gemspec file
|
227
253
|
def load_gemspec!
|
228
254
|
@gemspec = eval(File.read(@gemspec_file))
|
229
255
|
end
|
230
|
-
|
256
|
+
|
231
257
|
# Updates the VERSION file with the new version
|
232
258
|
def update_version_file(version)
|
233
259
|
if File.exists?('VERSION')
|
234
|
-
File.open('VERSION', 'w') { |f| f << version.to_s }
|
260
|
+
File.open('VERSION', 'w') { |f| f << version.to_s }
|
235
261
|
modified_files << 'VERSION'
|
236
262
|
end
|
237
263
|
end
|
238
|
-
|
264
|
+
|
239
265
|
# Updates the VERSION constant in the main include file if it exists
|
240
266
|
def update_version_constant(version)
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
267
|
+
if main_include && File.exist?(main_include)
|
268
|
+
file_contents = File.read(main_include)
|
269
|
+
if file_contents.sub!(/^(\s+VERSION\s*=\s*)[^\s].*$/) { $1 + version.to_s.inspect }
|
270
|
+
File.open(main_include, 'w') { |f| f << file_contents }
|
271
|
+
modified_files << main_include
|
272
|
+
end
|
273
|
+
end
|
246
274
|
end
|
247
|
-
|
275
|
+
|
248
276
|
# Updates an attribute of the gemspec file.
|
249
277
|
# This function will open the file, and search/replace the attribute using a regular expression.
|
250
278
|
def update_gemspec(attribute, new_value, literal = false)
|
251
|
-
|
279
|
+
|
252
280
|
unless literal
|
253
281
|
new_value = case new_value
|
254
282
|
when Array then "%w(#{new_value.join(' ')})"
|
255
283
|
when Hash, String then new_value.inspect
|
256
|
-
when Date then new_value.strftime('%Y-%m-%d').inspect
|
284
|
+
when Date then new_value.strftime('%Y-%m-%d').inspect
|
257
285
|
else raise "Cannot write value #{new_value.inspect} to gemspec file!"
|
258
286
|
end
|
259
287
|
end
|
260
|
-
|
288
|
+
|
261
289
|
spec = File.read(gemspec_file)
|
262
290
|
regexp = Regexp.new('^(\s+\w+\.' + Regexp.quote(attribute.to_s) + '\s*=\s*)[^\s].*$')
|
263
291
|
if spec.sub!(regexp) { $1 + new_value }
|
264
|
-
File.open(gemspec_file, 'w') { |f| f << spec }
|
292
|
+
File.open(gemspec_file, 'w') { |f| f << spec }
|
265
293
|
modified_files << gemspec_file
|
266
|
-
|
294
|
+
|
267
295
|
# Reload the gemspec so the changes are incorporated
|
268
296
|
load_gemspec!
|
269
297
|
end
|
270
298
|
end
|
271
|
-
|
299
|
+
|
300
|
+
# Updates the tasks file using the latest file found on Github
|
301
|
+
def update_tasks_task
|
302
|
+
require 'net/http'
|
303
|
+
|
304
|
+
server = 'github.com'
|
305
|
+
path = '/wvanbergen/github-gem/raw/master/tasks/github-gem.rake'
|
306
|
+
|
307
|
+
Net::HTTP.start(server) do |http|
|
308
|
+
response = http.get(path)
|
309
|
+
open(__FILE__, "w") { |file| file.write(response.body) }
|
310
|
+
end
|
311
|
+
|
312
|
+
relative_file = File.expand_path(__FILE__).sub(%r[^#{git.dir.path}/], '')
|
313
|
+
if git.status[relative_file] && git.status[relative_file].type == 'M'
|
314
|
+
git.add(relative_file)
|
315
|
+
git.commit("Updated to latest gem release management tasks.")
|
316
|
+
puts "Updated to latest version of gem release management tasks."
|
317
|
+
else
|
318
|
+
puts "Release managament tasks already are at the latest version."
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
272
322
|
end
|
273
323
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wvanbergen-adyen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Willem van Bergen
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-10-07 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 1.1.0
|
35
35
|
version:
|
36
|
-
description: Package to simplify including the Adyen payments services into a Ruby on Rails application.
|
36
|
+
description: " Package to simplify including the Adyen payments services into a Ruby on Rails application.\n The package provides functionality to create payment forms, handling and storing notifications \n sent by Adyen and consuming the SOAP services provided by Adyen. Moreover, it contains helper\n methods, mocks and matchers to simpify writing tests/specsfor your code.\n"
|
37
37
|
email:
|
38
38
|
- willem@vanbergen.org
|
39
39
|
- cicaboo@gmail.com
|
@@ -63,13 +63,14 @@ files:
|
|
63
63
|
- lib/adyen/formatter.rb
|
64
64
|
- lib/adyen.rb
|
65
65
|
- lib/adyen/encoding.rb
|
66
|
-
has_rdoc:
|
67
|
-
homepage: http://
|
68
|
-
licenses:
|
66
|
+
has_rdoc: true
|
67
|
+
homepage: http://wiki.github.com/wvanbergen/adyen
|
68
|
+
licenses: []
|
69
|
+
|
69
70
|
post_install_message:
|
70
71
|
rdoc_options:
|
71
72
|
- --title
|
72
|
-
- adyen
|
73
|
+
- wvanbergen-adyen
|
73
74
|
- --main
|
74
75
|
- README.rdoc
|
75
76
|
- --line-numbers
|
@@ -88,13 +89,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
89
|
- !ruby/object:Gem::Version
|
89
90
|
version: "0"
|
90
91
|
version:
|
91
|
-
requirements:
|
92
|
-
|
92
|
+
requirements:
|
93
|
+
- Handsoap is required for accessing the SOAP services. See http://github.com/troelskn/handsoap.
|
94
|
+
- LibXML is required for using the RSpec matchers.
|
95
|
+
- ActiveRecord is required for storing the notifications in your database.
|
93
96
|
rubyforge_project:
|
94
97
|
rubygems_version: 1.3.5
|
95
98
|
signing_key:
|
96
|
-
specification_version:
|
97
|
-
summary: Integrate Adyen payment services in you Ruby on Rails application
|
99
|
+
specification_version: 3
|
100
|
+
summary: Integrate Adyen payment services in you Ruby on Rails application.
|
98
101
|
test_files:
|
99
102
|
- spec/soap_spec.rb
|
100
103
|
- spec/notification_spec.rb
|