adyen-admin 0.0.4 → 0.0.5

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.
data/CHANGES.md CHANGED
@@ -7,6 +7,10 @@
7
7
  * add CLI binaries (to compile + upload) -> read from .adyenrc file
8
8
  * make compatible with Live system
9
9
 
10
+ ## v0.0.5
11
+ * fix name with multiple - issue
12
+ * added decompile with backup
13
+
10
14
  ## v0.0.4
11
15
  * get the default path right
12
16
  * add path to remote skins
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -1,4 +1,4 @@
1
- require 'tmpdir'
1
+ require 'tempfile'
2
2
  require 'zip/zip'
3
3
 
4
4
  module Adyen
@@ -22,7 +22,7 @@ module Adyen
22
22
 
23
23
  self.path ||= File.join(Skin.default_path, [name,code].compact.join("-"))
24
24
 
25
- raise ArgumentError unless code
25
+ raise ArgumentError, "No Code given" unless code
26
26
  end
27
27
 
28
28
  def self.default_path
@@ -81,9 +81,9 @@ module Adyen
81
81
 
82
82
  def path=(new_path)
83
83
  if Skin.is_skin_path?(new_path)
84
- new_code, new_name = File.basename(new_path).split("-").reverse
84
+ new_code, *new_name = File.basename(new_path).split("-").reverse
85
85
  self.code ||= new_code
86
- self.name ||= new_name
86
+ self.name ||= new_name.reverse.join("-")
87
87
  raise ArgumentError if self.code && self.code != new_code
88
88
  @path = new_path
89
89
  end
@@ -124,33 +124,56 @@ module Adyen
124
124
  def download
125
125
  "#{code}.zip".tap do |filename|
126
126
  Adyen::Admin.client.download(DOWNLOAD % code, filename)
127
+ end
128
+ end
127
129
 
128
- if path
129
- # create backup of current
130
- # compile
130
+ def decompile(filename, backup = true)
131
+ # create backup of current, include any files
132
+ if self.path
133
+ if backup
134
+ compile(/(zip|lock)$/, ".backup.zip")
135
+ end
136
+ else
137
+ File.join(Skin.default_path, [name,code].compact.join("-")).tap do |p|
138
+ `mkdir -p #{p}`
139
+ self.path = p
131
140
  end
132
- # unzip
141
+ end
142
+
143
+ Zip::ZipFile.open(filename) do |zip_file|
144
+ zip_file.each do |file|
145
+ f_path = File.join(self.path, file.name.gsub("#{code}/", ""))
146
+ FileUtils.mkdir_p(File.dirname(f_path))
147
+ if File.directory?(f_path)
148
+ `mkdir -p #{f_path}`
149
+ else
150
+ `rm -f #{f_path}`
151
+ zip_file.extract(file, f_path)
152
+ end
153
+ end
154
+ end
155
+
156
+ if backup
157
+ `mv .backup.zip #{File.join(self.path, ".backup.zip")}`
133
158
  end
134
159
  end
135
160
 
136
- def compile
137
- raise ArgumentError unless path
161
+ def compile(exclude = /(yml|zip|erb)$/, outfile = "#{code}.zip")
162
+ raise ArgumentError, "No Path given" unless path
138
163
 
139
- File.join(Dir.tmpdir, "#{code}.zip").tap do |filename|
140
- `rm -rf #{filename}`
141
- Zip::ZipFile.open(filename, 'w') do |zipfile|
164
+ outfile.tap do |filename|
165
+ `rm -f #{filename}`
166
+ Zip::ZipFile.open(filename, Zip::ZipFile::CREATE) do |zip_file|
142
167
  Dir["#{path}/**/**"].each do |file|
143
- next if file.include?(".yml")
144
- next if file.include?(".erb")
145
- zipfile.add(file.sub(path, code), file)
168
+ next if file =~ exclude
169
+ zip_file.add(file.sub(path, code), file)
146
170
  end
147
171
 
148
172
  dir = File.join(File.dirname(path), parent_skin_code)
149
173
  Dir["#{dir}/**/**"].each do |file|
150
174
  begin
151
- next if file.include?(".yml")
152
- next if file.include?(".erb")
153
- zipfile.add(file.sub(dir, code), file)
175
+ next if file =~ exclude
176
+ zip_file.add(file.sub(dir, code), file)
154
177
  rescue Zip::ZipEntryExistsError
155
178
  # NOOP
156
179
  end
@@ -175,8 +198,6 @@ module Adyen
175
198
  end
176
199
 
177
200
  def publish
178
- raise ArgumentError unless code
179
-
180
201
  page = Adyen::Admin.get(PUBLISH % code)
181
202
  page = Adyen::Admin.client.submit(page.form.tap do |form|
182
203
  end)
@@ -94,6 +94,10 @@ module Adyen::Admin
94
94
  Skin.new(:path => path).code.should == "7hFAQnmt"
95
95
  end
96
96
 
97
+ it "auto sets name from path" do
98
+ Skin.new(:path => path).name.should == "example"
99
+ end
100
+
97
101
  it "raises error on wrong code for path" do
98
102
  expect do
99
103
  Skin.new(:code => "different", :path => path).path.should == path
@@ -105,10 +109,20 @@ module Adyen::Admin
105
109
  Skin.new
106
110
  end.to raise_error
107
111
  end
112
+
113
+ context "slash in name" do
114
+ let(:path) { "#{skin_fixtures}/example-test-7hFAQnmt" }
115
+
116
+ it "sets name" do
117
+ Skin.stub(:is_skin_path?).and_return(true)
118
+ Skin.new(:path => path).name.should == "example-test"
119
+ end
120
+ end
108
121
  end
109
122
 
110
123
  describe "#download" do
111
- let(:zip_filename) { "#{skin.code}.zip"}
124
+ let(:zip_filename) { "#{skin.code}.zip" }
125
+
112
126
  after do
113
127
  `rm -rf #{zip_filename}`
114
128
  end
@@ -119,17 +133,52 @@ module Adyen::Admin
119
133
  end
120
134
  end
121
135
 
136
+ describe "#decompile" do
137
+ let(:skin_code) { "DV3tf95f" }
138
+ let(:skin) { Skin.new(:path => "#{skin_fixtures}/#{skin_code}") }
139
+ let!(:zip_filename) { skin.compile(nil) }
140
+ let(:backup_filename) { File.join(skin.path, '.backup.zip') }
141
+
142
+ before do
143
+ `cp -r #{skin_fixtures}/#{skin_code} #{skin_fixtures}/_backup`
144
+ end
145
+
146
+ after do
147
+ `rm -rf #{zip_filename} #{backup_filename} #{skin_fixtures}/#{skin_code}`
148
+ `mv #{skin_fixtures}/_backup #{skin_fixtures}/#{skin_code}`
149
+ end
150
+
151
+ it "creates backup" do
152
+ skin.decompile(zip_filename)
153
+
154
+ File.should be_exists(backup_filename)
155
+ end
156
+
157
+ it "unzips files" do
158
+ `rm -rf #{skin.path}`
159
+
160
+ expect do
161
+ skin.decompile(zip_filename)
162
+ end.to change { File.exists?(File.join(skin.path, 'inc', 'order_data.txt')) }
163
+ end
164
+ end
165
+
122
166
  describe "#compile" do
123
167
  let(:skin_code) { "DV3tf95f" }
124
168
  let(:skin) { Skin.new(:path => "#{skin_fixtures}/#{skin_code}") }
169
+ let(:zip_filename) { skin.compile }
125
170
 
126
- def zip_contains(zip_filename, file)
127
- Zip::ZipFile.open(zip_filename, 'r') do |zipfile|
171
+ def zip_contains(file)
172
+ Zip::ZipFile.open(zip_filename) do |zipfile|
128
173
  return true if zipfile.find_entry(File.join(skin_code, file))
129
174
  end
130
175
  false
131
176
  end
132
177
 
178
+ after do
179
+ `rm -f #{skin_code}.zip`
180
+ end
181
+
133
182
  context "without base" do
134
183
  before do
135
184
  `mv #{skin_fixtures}/base #{skin_fixtures}/base2`
@@ -140,32 +189,48 @@ module Adyen::Admin
140
189
  end
141
190
 
142
191
  it "includes screen file" do
143
- zip_contains(skin.compile, "css/screen.css").should be_true
192
+ zip_contains("css/screen.css").should be_true
144
193
  end
145
194
 
146
195
  it "excludes print files" do
147
- zip_contains(skin.compile, "css/print.css").should_not be_true
196
+ zip_contains("css/print.css").should_not be_true
148
197
  end
149
198
  end
150
199
 
151
200
  it "includes screen file" do
152
- zip_contains(skin.compile, "css/screen.css").should be_true
201
+ zip_contains("css/screen.css").should be_true
153
202
  end
154
203
 
155
204
  it "includes print file" do
156
- zip_contains(skin.compile, "css/print.css").should be_true
205
+ zip_contains("css/print.css").should be_true
157
206
  end
158
207
 
159
208
  it "excludes meta file" do
160
- zip_contains(skin.compile, "metadata.yml").should_not be_true
209
+ zip_contains("metadata.yml").should_not be_true
161
210
  end
162
211
 
163
212
  it "excludes skin file" do
164
- zip_contains(skin.compile, "skin.html.erb").should_not be_true
213
+ zip_contains("skin.html.erb").should_not be_true
214
+ end
215
+
216
+ context "no exlusion" do
217
+ let(:zip_filename) { skin.compile(nil) }
218
+
219
+ it "excludes meta file" do
220
+ zip_contains("metadata.yml").should be_true
221
+ end
222
+
223
+ it "excludes skin file" do
224
+ zip_contains("skin.html.erb").should be_true
225
+ end
165
226
  end
166
227
  end
167
228
 
168
229
  describe "#upload" do
230
+ after do
231
+ `rm -f #{skin_code}.zip`
232
+ end
233
+
169
234
  context "valid set" do
170
235
  it "increases version" do
171
236
  skin.path = "#{skin_fixtures}/example-7hFAQnmt"
@@ -0,0 +1,5 @@
1
+ name:
2
+ code: DV3tf95f
3
+ version:
4
+ version_live:
5
+ version_test:
@@ -0,0 +1,13 @@
1
+ <!-- ### inc/cheader_[locale].txt or inc/cheader.txt (fallback) ### -->
2
+
3
+ <% adyen_form_tag do %>
4
+ <!-- ### inc/pmheader_[locale].txt or inc/pmheader.txt (fallback) ### -->
5
+
6
+ <%= adyen_payment_fields %>
7
+
8
+ <!-- ### inc/pmfooter_[locale].txt or inc/pmfooter.txt (fallback) ### -->
9
+
10
+ <!-- ### inc/customfields_[locale].txt or inc/customfields.txt (fallback) ### -->
11
+ <% end %>
12
+
13
+ <!-- ### inc/cfooter_[locale].txt or inc/cfooter.txt (fallback) ### -->
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adyen-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-11 00:00:00.000000000Z
12
+ date: 2012-04-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mechanize
16
- requirement: &70296435524120 !ruby/object:Gem::Requirement
16
+ requirement: &70322653878160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70296435524120
24
+ version_requirements: *70322653878160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rubyzip
27
- requirement: &70296435523640 !ruby/object:Gem::Requirement
27
+ requirement: &70322653877680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70296435523640
35
+ version_requirements: *70322653877680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70296435523060 !ruby/object:Gem::Requirement
38
+ requirement: &70322653877100 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70296435523060
46
+ version_requirements: *70322653877100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70296435522600 !ruby/object:Gem::Requirement
49
+ requirement: &70322653876640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70296435522600
57
+ version_requirements: *70322653876640
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: vcr
60
- requirement: &70296435522140 !ruby/object:Gem::Requirement
60
+ requirement: &70322653876180 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70296435522140
68
+ version_requirements: *70322653876180
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
- requirement: &70296435521680 !ruby/object:Gem::Requirement
71
+ requirement: &70322653875720 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70296435521680
79
+ version_requirements: *70322653875720
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: debugger
82
- requirement: &70296435521220 !ruby/object:Gem::Requirement
82
+ requirement: &70322653875260 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70296435521220
90
+ version_requirements: *70322653875260
91
91
  description: A little Gem to make your life easier when dealing with Adyen skins
92
92
  email:
93
93
  - tobi@soundcloud.com
@@ -126,6 +126,8 @@ files:
126
126
  - spec/fixtures/cassettes/login.yml
127
127
  - spec/fixtures/skins/DV3tf95f/css/screen.css
128
128
  - spec/fixtures/skins/DV3tf95f/inc/order_data.txt
129
+ - spec/fixtures/skins/DV3tf95f/metadata.yml
130
+ - spec/fixtures/skins/DV3tf95f/skin.html.erb
129
131
  - spec/fixtures/skins/JH0815/css/screen.css
130
132
  - spec/fixtures/skins/JH0815/skin.html.erb
131
133
  - spec/fixtures/skins/base/css/print.css
@@ -204,6 +206,8 @@ test_files:
204
206
  - spec/fixtures/cassettes/login.yml
205
207
  - spec/fixtures/skins/DV3tf95f/css/screen.css
206
208
  - spec/fixtures/skins/DV3tf95f/inc/order_data.txt
209
+ - spec/fixtures/skins/DV3tf95f/metadata.yml
210
+ - spec/fixtures/skins/DV3tf95f/skin.html.erb
207
211
  - spec/fixtures/skins/JH0815/css/screen.css
208
212
  - spec/fixtures/skins/JH0815/skin.html.erb
209
213
  - spec/fixtures/skins/base/css/print.css