dassets 0.2.0 → 0.3.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.
- data/README.md +15 -5
- data/lib/dassets.rb +59 -12
- data/lib/dassets/asset_file.rb +15 -14
- data/lib/dassets/cmds/cache_cmd.rb +33 -0
- data/lib/dassets/cmds/digest_cmd.rb +53 -0
- data/lib/dassets/{digests_file.rb → digests.rb} +14 -23
- data/lib/dassets/engine.rb +33 -0
- data/lib/dassets/runner.rb +10 -4
- data/lib/dassets/server/response.rb +1 -1
- data/lib/dassets/source_file.rb +71 -0
- data/lib/dassets/version.rb +1 -1
- data/test/support/app/assets/.digests +1 -0
- data/test/support/app/assets/file1.txt +1 -0
- data/test/support/app/assets/file2.txt +1 -0
- data/test/support/app/assets/grumpy_cat.jpg +0 -0
- data/test/support/app/assets/nested/a-thing.txt.useless.dumb +1 -0
- data/test/support/app/assets/nested/file3.txt +0 -0
- data/test/support/app/assets/public/nested/a-thing.txt.no-use +4 -0
- data/test/support/config/assets.rb +12 -1
- data/test/support/example.digests +3 -3
- data/test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use +4 -0
- data/test/support/source_files/_ignored.txt +0 -0
- data/test/support/source_files/nested/_nested_ignored.txt +0 -0
- data/test/support/source_files/nested/test2.txt +0 -0
- data/test/support/source_files/test1.txt +0 -0
- data/test/system/cache_cmd_run_tests.rb +27 -0
- data/test/system/digest_cmd_run_tests.rb +70 -0
- data/test/unit/asset_file_tests.rb +11 -11
- data/test/unit/cmds/cache_cmd_tests.rb +33 -0
- data/test/unit/cmds/digest_cmd_tests.rb +23 -0
- data/test/unit/config_tests.rb +52 -7
- data/test/unit/dassets_tests.rb +59 -5
- data/test/unit/digests_tests.rb +79 -0
- data/test/unit/engine_tests.rb +59 -0
- data/test/unit/server/response_tests.rb +5 -5
- data/test/unit/source_file_tests.rb +82 -0
- metadata +45 -13
- data/lib/dassets/runner/cache_command.rb +0 -46
- data/lib/dassets/runner/digest_command.rb +0 -65
- data/test/unit/digests_file_tests.rb +0 -90
- data/test/unit/runner/cache_command_tests.rb +0 -62
- data/test/unit/runner/digest_command_tests.rb +0 -83
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'dassets/engine'
|
3
|
+
|
4
|
+
class Dassets::Engine
|
5
|
+
|
6
|
+
class BaseTests < Assert::Context
|
7
|
+
desc "the base Dassets::Engine"
|
8
|
+
setup do
|
9
|
+
@engine = Dassets::Engine.new
|
10
|
+
end
|
11
|
+
subject{ @engine }
|
12
|
+
|
13
|
+
should have_reader :opts
|
14
|
+
should have_imeths :ext, :compile
|
15
|
+
|
16
|
+
should "default the opts if none given" do
|
17
|
+
exp_opts = {}
|
18
|
+
assert_equal exp_opts, subject.opts
|
19
|
+
end
|
20
|
+
|
21
|
+
should "raise NotImplementedError on `ext` and `compile`" do
|
22
|
+
assert_raises NotImplementedError do
|
23
|
+
subject.ext('foo')
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_raises NotImplementedError do
|
27
|
+
subject.compile('some content')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
class NullEngineTests < Assert::Context
|
34
|
+
desc "the NullEngine"
|
35
|
+
setup do
|
36
|
+
@engine = Dassets::NullEngine.new('some' => 'opts')
|
37
|
+
end
|
38
|
+
subject{ @engine }
|
39
|
+
|
40
|
+
should "be a Engine" do
|
41
|
+
assert_kind_of Dassets::Engine, subject
|
42
|
+
end
|
43
|
+
|
44
|
+
should "know its opts" do
|
45
|
+
exp_opts = {'some' => 'opts'}
|
46
|
+
assert_equal exp_opts, subject.opts
|
47
|
+
end
|
48
|
+
|
49
|
+
should "return the given extension on `ext`" do
|
50
|
+
assert_equal 'foo', subject.ext('foo')
|
51
|
+
end
|
52
|
+
|
53
|
+
should "return the given input on `compile" do
|
54
|
+
assert_equal 'some content', subject.compile('some content')
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -16,7 +16,7 @@ class Dassets::Server::Response
|
|
16
16
|
|
17
17
|
should "handle not modified files" do
|
18
18
|
af = Dassets['file1.txt']
|
19
|
-
mtime = File.mtime(af.
|
19
|
+
mtime = File.mtime(af.output_path).httpdate.to_s
|
20
20
|
resp = file_response(af, 'HTTP_IF_MODIFIED_SINCE' => mtime)
|
21
21
|
|
22
22
|
assert_equal 304, resp.status
|
@@ -30,8 +30,8 @@ class Dassets::Server::Response
|
|
30
30
|
resp = file_response(af)
|
31
31
|
exp_headers = {
|
32
32
|
'Content-Type' => 'text/plain',
|
33
|
-
'Content-Length' => File.size?(af.
|
34
|
-
'Last-Modified' => File.mtime(af.
|
33
|
+
'Content-Length' => File.size?(af.output_path).to_s,
|
34
|
+
'Last-Modified' => File.mtime(af.output_path).httpdate.to_s
|
35
35
|
}
|
36
36
|
|
37
37
|
assert_equal 200, resp.status
|
@@ -53,9 +53,9 @@ class Dassets::Server::Response
|
|
53
53
|
resp = file_response(af)
|
54
54
|
|
55
55
|
assert_equal 404, resp.status
|
56
|
-
assert_equal [], resp.body
|
56
|
+
assert_equal ['Not Found'], resp.body
|
57
57
|
assert_equal Rack::Utils::HeaderHash.new, resp.headers
|
58
|
-
assert_equal [ 404, {}, [] ], resp.to_rack
|
58
|
+
assert_equal [ 404, {}, ['Not Found'] ], resp.to_rack
|
59
59
|
end
|
60
60
|
|
61
61
|
protected
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'dassets/engine'
|
3
|
+
require 'dassets/source_file'
|
4
|
+
|
5
|
+
class Dassets::SourceFile
|
6
|
+
|
7
|
+
class BaseTests < Assert::Context
|
8
|
+
desc "Dassets::SourceFile"
|
9
|
+
setup do
|
10
|
+
@file_path = File.join(Dassets.config.source_path, 'file1.txt')
|
11
|
+
@source_file = Dassets::SourceFile.new(@file_path)
|
12
|
+
end
|
13
|
+
subject{ @source_file }
|
14
|
+
|
15
|
+
should have_readers :file_path
|
16
|
+
should have_imeths :exists?, :digest_path, :compiled, :fingerprint
|
17
|
+
|
18
|
+
should "know its file path" do
|
19
|
+
assert_equal @file_path, subject.file_path
|
20
|
+
end
|
21
|
+
|
22
|
+
should "know if it exists" do
|
23
|
+
assert subject.exists?
|
24
|
+
end
|
25
|
+
|
26
|
+
should "know its digest path" do
|
27
|
+
assert_equal 'file1.txt', subject.digest_path
|
28
|
+
end
|
29
|
+
|
30
|
+
should "know its compiled content fingerprint" do
|
31
|
+
assert_equal 'daa05c683a4913b268653f7a7e36a5b4', subject.fingerprint
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
class EngineTests < BaseTests
|
37
|
+
desc "compiled against engines"
|
38
|
+
setup do
|
39
|
+
@file_path = File.join(Dassets.config.source_path, 'nested/a-thing.txt.useless.dumb')
|
40
|
+
@source_file = Dassets::SourceFile.new(@file_path)
|
41
|
+
end
|
42
|
+
|
43
|
+
should "build the digest path appropriately" do
|
44
|
+
assert_equal 'nested/a-thing.txt.no-use', subject.digest_path
|
45
|
+
end
|
46
|
+
|
47
|
+
should "compile the source content appropriately" do
|
48
|
+
file_content = File.read(@file_path)
|
49
|
+
exp_compiled_content = [ file_content, 'DUMB', 'USELESS' ].join("\n")
|
50
|
+
assert_equal exp_compiled_content, subject.compiled
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
class DigestTests < EngineTests
|
56
|
+
desc "being digested"
|
57
|
+
setup do
|
58
|
+
Dassets.init
|
59
|
+
@digested_asset_file = @source_file.digest
|
60
|
+
end
|
61
|
+
teardown do
|
62
|
+
Dassets.reset
|
63
|
+
end
|
64
|
+
|
65
|
+
should "return the digested asset file" do
|
66
|
+
assert_not_nil @digested_asset_file
|
67
|
+
assert_kind_of Dassets::AssetFile, @digested_asset_file
|
68
|
+
end
|
69
|
+
|
70
|
+
should "compile and write an asset file to the output path" do
|
71
|
+
assert_file_exists @digested_asset_file.output_path
|
72
|
+
assert_equal subject.compiled, File.read(@digested_asset_file.output_path)
|
73
|
+
end
|
74
|
+
|
75
|
+
should "add a digests entry for the asset file with its fingerprint" do
|
76
|
+
digests_on_disk = Dassets::Digests.new(Dassets.config.digests_path)
|
77
|
+
assert_equal subject.fingerprint, digests_on_disk[subject.digest_path]
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dassets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-04-
|
19
|
+
date: 2013-04-25 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: assert
|
@@ -114,22 +114,30 @@ files:
|
|
114
114
|
- lib/dassets.rb
|
115
115
|
- lib/dassets/asset_file.rb
|
116
116
|
- lib/dassets/cli.rb
|
117
|
-
- lib/dassets/
|
117
|
+
- lib/dassets/cmds/cache_cmd.rb
|
118
|
+
- lib/dassets/cmds/digest_cmd.rb
|
119
|
+
- lib/dassets/digests.rb
|
120
|
+
- lib/dassets/engine.rb
|
118
121
|
- lib/dassets/root_path.rb
|
119
122
|
- lib/dassets/runner.rb
|
120
|
-
- lib/dassets/runner/cache_command.rb
|
121
|
-
- lib/dassets/runner/digest_command.rb
|
122
123
|
- lib/dassets/server.rb
|
123
124
|
- lib/dassets/server/request.rb
|
124
125
|
- lib/dassets/server/response.rb
|
126
|
+
- lib/dassets/source_file.rb
|
125
127
|
- lib/dassets/version.rb
|
126
128
|
- log/.gitkeep
|
127
129
|
- test/helper.rb
|
128
130
|
- test/support/app.rb
|
129
131
|
- test/support/app/assets/.digests
|
132
|
+
- test/support/app/assets/file1.txt
|
133
|
+
- test/support/app/assets/file2.txt
|
134
|
+
- test/support/app/assets/grumpy_cat.jpg
|
135
|
+
- test/support/app/assets/nested/a-thing.txt.useless.dumb
|
136
|
+
- test/support/app/assets/nested/file3.txt
|
130
137
|
- test/support/app/assets/public/file1.txt
|
131
138
|
- test/support/app/assets/public/file2.txt
|
132
139
|
- test/support/app/assets/public/grumpy_cat.jpg
|
140
|
+
- test/support/app/assets/public/nested/a-thing.txt.no-use
|
133
141
|
- test/support/app/assets/public/nested/file3.txt
|
134
142
|
- test/support/app_public/.gitkeep
|
135
143
|
- test/support/config/assets.rb
|
@@ -137,18 +145,27 @@ files:
|
|
137
145
|
- test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
|
138
146
|
- test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
|
139
147
|
- test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
|
148
|
+
- test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
|
140
149
|
- test/support/public/nested/file3-d41d8cd98f00b204e9800998ecf8427e.txt
|
150
|
+
- test/support/source_files/_ignored.txt
|
151
|
+
- test/support/source_files/nested/_nested_ignored.txt
|
152
|
+
- test/support/source_files/nested/test2.txt
|
153
|
+
- test/support/source_files/test1.txt
|
154
|
+
- test/system/cache_cmd_run_tests.rb
|
155
|
+
- test/system/digest_cmd_run_tests.rb
|
141
156
|
- test/system/rack_tests.rb
|
142
157
|
- test/unit/asset_file_tests.rb
|
158
|
+
- test/unit/cmds/cache_cmd_tests.rb
|
159
|
+
- test/unit/cmds/digest_cmd_tests.rb
|
143
160
|
- test/unit/config_tests.rb
|
144
161
|
- test/unit/dassets_tests.rb
|
145
|
-
- test/unit/
|
146
|
-
- test/unit/
|
147
|
-
- test/unit/runner/digest_command_tests.rb
|
162
|
+
- test/unit/digests_tests.rb
|
163
|
+
- test/unit/engine_tests.rb
|
148
164
|
- test/unit/runner_tests.rb
|
149
165
|
- test/unit/server/request_tests.rb
|
150
166
|
- test/unit/server/response_tests.rb
|
151
167
|
- test/unit/server_tests.rb
|
168
|
+
- test/unit/source_file_tests.rb
|
152
169
|
- tmp/.gitkeep
|
153
170
|
homepage: http://github.com/redding/dassets
|
154
171
|
licenses: []
|
@@ -187,9 +204,15 @@ test_files:
|
|
187
204
|
- test/helper.rb
|
188
205
|
- test/support/app.rb
|
189
206
|
- test/support/app/assets/.digests
|
207
|
+
- test/support/app/assets/file1.txt
|
208
|
+
- test/support/app/assets/file2.txt
|
209
|
+
- test/support/app/assets/grumpy_cat.jpg
|
210
|
+
- test/support/app/assets/nested/a-thing.txt.useless.dumb
|
211
|
+
- test/support/app/assets/nested/file3.txt
|
190
212
|
- test/support/app/assets/public/file1.txt
|
191
213
|
- test/support/app/assets/public/file2.txt
|
192
214
|
- test/support/app/assets/public/grumpy_cat.jpg
|
215
|
+
- test/support/app/assets/public/nested/a-thing.txt.no-use
|
193
216
|
- test/support/app/assets/public/nested/file3.txt
|
194
217
|
- test/support/app_public/.gitkeep
|
195
218
|
- test/support/config/assets.rb
|
@@ -197,15 +220,24 @@ test_files:
|
|
197
220
|
- test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
|
198
221
|
- test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
|
199
222
|
- test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
|
223
|
+
- test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
|
200
224
|
- test/support/public/nested/file3-d41d8cd98f00b204e9800998ecf8427e.txt
|
225
|
+
- test/support/source_files/_ignored.txt
|
226
|
+
- test/support/source_files/nested/_nested_ignored.txt
|
227
|
+
- test/support/source_files/nested/test2.txt
|
228
|
+
- test/support/source_files/test1.txt
|
229
|
+
- test/system/cache_cmd_run_tests.rb
|
230
|
+
- test/system/digest_cmd_run_tests.rb
|
201
231
|
- test/system/rack_tests.rb
|
202
232
|
- test/unit/asset_file_tests.rb
|
233
|
+
- test/unit/cmds/cache_cmd_tests.rb
|
234
|
+
- test/unit/cmds/digest_cmd_tests.rb
|
203
235
|
- test/unit/config_tests.rb
|
204
236
|
- test/unit/dassets_tests.rb
|
205
|
-
- test/unit/
|
206
|
-
- test/unit/
|
207
|
-
- test/unit/runner/digest_command_tests.rb
|
237
|
+
- test/unit/digests_tests.rb
|
238
|
+
- test/unit/engine_tests.rb
|
208
239
|
- test/unit/runner_tests.rb
|
209
240
|
- test/unit/server/request_tests.rb
|
210
241
|
- test/unit/server/response_tests.rb
|
211
242
|
- test/unit/server_tests.rb
|
243
|
+
- test/unit/source_file_tests.rb
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
require 'fileutils'
|
3
|
-
require 'dassets/asset_file'
|
4
|
-
require 'dassets/digests_file'
|
5
|
-
|
6
|
-
module Dassets; end
|
7
|
-
class Dassets::Runner; end
|
8
|
-
class Dassets::Runner::CacheCommand
|
9
|
-
|
10
|
-
attr_reader :files_root_path, :cache_root_path, :digests_file, :asset_files
|
11
|
-
|
12
|
-
def initialize(cache_root_path)
|
13
|
-
unless cache_root_path && File.directory?(cache_root_path)
|
14
|
-
raise Dassets::Runner::CmdError, "specify an existing cache directory"
|
15
|
-
end
|
16
|
-
|
17
|
-
@files_root_path = Pathname.new(Dassets.config.files_path)
|
18
|
-
@cache_root_path = Pathname.new(cache_root_path)
|
19
|
-
@digests_file = Dassets::DigestsFile.new(Dassets.config.digests_file_path)
|
20
|
-
@asset_files = @digests_file.asset_files
|
21
|
-
end
|
22
|
-
|
23
|
-
def run(write_files=true)
|
24
|
-
begin
|
25
|
-
@asset_files.each do |file|
|
26
|
-
files_path = @files_root_path.join(file.path).to_s
|
27
|
-
cache_path = @cache_root_path.join(file.cache_path).to_s
|
28
|
-
|
29
|
-
if write_files
|
30
|
-
FileUtils.mkdir_p File.dirname(cache_path)
|
31
|
-
FileUtils.cp(files_path, cache_path)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
unless ENV['DASSETS_TEST_MODE']
|
35
|
-
$stdout.puts "#{@asset_files.size} files written to #{@cache_root_path}"
|
36
|
-
end
|
37
|
-
return write_files
|
38
|
-
rescue Exception => e
|
39
|
-
unless ENV['DASSETS_TEST_MODE']
|
40
|
-
$stderr.puts e, *e.backtrace; $stderr.puts ""
|
41
|
-
end
|
42
|
-
raise Dassets::Runner::CmdFail
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'set'
|
2
|
-
require 'dassets/asset_file'
|
3
|
-
require 'dassets/digests_file'
|
4
|
-
|
5
|
-
module Dassets; end
|
6
|
-
class Dassets::Runner; end
|
7
|
-
class Dassets::Runner::DigestCommand
|
8
|
-
|
9
|
-
attr_reader :asset_files, :digests_file
|
10
|
-
|
11
|
-
def initialize(file_paths)
|
12
|
-
@pwd = ENV['PWD']
|
13
|
-
@asset_files = if (file_paths || []).empty?
|
14
|
-
get_asset_files([*Dassets.config.files_path])
|
15
|
-
else
|
16
|
-
get_asset_files(file_paths)
|
17
|
-
end
|
18
|
-
@digests_file = Dassets::DigestsFile.new(Dassets.config.digests_file_path)
|
19
|
-
end
|
20
|
-
|
21
|
-
def run(save=true)
|
22
|
-
begin
|
23
|
-
digest_paths = @digests_file.keys
|
24
|
-
asset_paths = @asset_files.map{ |f| f.path }
|
25
|
-
|
26
|
-
(digest_paths - asset_paths).each{ |file| @digests_file.delete(file) }
|
27
|
-
@asset_files.each{ |f| @digests_file[f.path] = f.md5 }
|
28
|
-
|
29
|
-
@digests_file.save! if save
|
30
|
-
unless ENV['DASSETS_TEST_MODE']
|
31
|
-
$stdout.puts "digested #{@asset_files.size} assets, saved to #{@digests_file.path}"
|
32
|
-
end
|
33
|
-
return save
|
34
|
-
rescue Exception => e
|
35
|
-
unless ENV['DASSETS_TEST_MODE']
|
36
|
-
$stderr.puts e, *e.backtrace; $stderr.puts ""
|
37
|
-
end
|
38
|
-
raise Dassets::Runner::CmdFail
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
# Get all file paths fuzzy-matching the given paths. Each path must be a
|
45
|
-
# file that exists and is in the `config.files_path` tree. Return them
|
46
|
-
# as sorted AssetFile objects.
|
47
|
-
def get_asset_files(paths)
|
48
|
-
fuzzy_paths(paths).
|
49
|
-
select{ |p| is_asset_file?(p) }.
|
50
|
-
sort.
|
51
|
-
map{ |p| Dassets::AssetFile.from_abs_path(p) }
|
52
|
-
end
|
53
|
-
|
54
|
-
def fuzzy_paths(paths)
|
55
|
-
paths.inject(Set.new) do |paths, path|
|
56
|
-
p = File.expand_path(path, @pwd)
|
57
|
-
paths += Dir.glob("#{p}*") + Dir.glob("#{p}*/**/*")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def is_asset_file?(path)
|
62
|
-
File.file?(path) && path.include?("#{Dassets.config.files_path}/")
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
require 'fileutils'
|
3
|
-
require 'dassets/digests_file'
|
4
|
-
require 'dassets/asset_file'
|
5
|
-
|
6
|
-
class Dassets::DigestsFile
|
7
|
-
|
8
|
-
class BaseTests < Assert::Context
|
9
|
-
desc "Dassets::DigestsFile"
|
10
|
-
setup do
|
11
|
-
@file_path = File.join(Dassets.config.root_path, 'example.digests')
|
12
|
-
@digests = Dassets::DigestsFile.new(@file_path)
|
13
|
-
end
|
14
|
-
subject{ @digests }
|
15
|
-
|
16
|
-
should have_reader :path
|
17
|
-
should have_imeths :asset_files, :asset_file, :to_hash, :save!
|
18
|
-
should have_imeths :[], :[]=, :delete, :each, :keys, :values, :empty?
|
19
|
-
|
20
|
-
should "know its path" do
|
21
|
-
assert_equal @file_path, subject.path
|
22
|
-
end
|
23
|
-
|
24
|
-
should "know its asset files" do
|
25
|
-
assert_equal subject.keys.size, subject.asset_files.size
|
26
|
-
assert_kind_of Dassets::AssetFile, subject.asset_files.first
|
27
|
-
end
|
28
|
-
|
29
|
-
should "get a specific asset file from its data" do
|
30
|
-
file = subject.asset_file('/path/to/file1')
|
31
|
-
|
32
|
-
assert_kind_of Dassets::AssetFile, file
|
33
|
-
assert_equal '/path/to/file1', file.path
|
34
|
-
assert_equal subject['/path/to/file1'], file.md5
|
35
|
-
end
|
36
|
-
|
37
|
-
should "know whether it is empty or not" do
|
38
|
-
assert_not_empty subject
|
39
|
-
end
|
40
|
-
|
41
|
-
should "read values with the index operator" do
|
42
|
-
assert_equal 'abc123', subject['/path/to/file1']
|
43
|
-
end
|
44
|
-
|
45
|
-
should "write values with the index operator" do
|
46
|
-
subject['/path/to/test'] = 'testytest'
|
47
|
-
assert_equal 'testytest', subject['/path/to/test']
|
48
|
-
end
|
49
|
-
|
50
|
-
should "remove values with the delete method" do
|
51
|
-
assert_includes '/path/to/file1', subject.keys
|
52
|
-
|
53
|
-
subject.delete '/path/to/file1'
|
54
|
-
assert_not_includes '/path/to/file1', subject.keys
|
55
|
-
end
|
56
|
-
|
57
|
-
should "know its hash representation" do
|
58
|
-
exp_hash = {
|
59
|
-
"/path/to/file1" => "abc123",
|
60
|
-
"/path/to/file2" => "123abc",
|
61
|
-
"/path/to/file3" => "a1b2c3"
|
62
|
-
}
|
63
|
-
subject_to_hash = subject.to_hash
|
64
|
-
subject_internal_hash = subject.instance_variable_get("@hash")
|
65
|
-
|
66
|
-
assert_equal exp_hash, subject_to_hash
|
67
|
-
assert_not_equal subject_internal_hash.object_id, subject_to_hash.object_id
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
class SaveTests < BaseTests
|
73
|
-
desc "on save"
|
74
|
-
setup do
|
75
|
-
FileUtils.mv(@file_path, "#{@file_path}.bak")
|
76
|
-
end
|
77
|
-
teardown do
|
78
|
-
FileUtils.mv("#{@file_path}.bak", @file_path)
|
79
|
-
end
|
80
|
-
|
81
|
-
should "write out the digests to the path" do
|
82
|
-
assert_not_file_exists subject.path
|
83
|
-
subject.save!
|
84
|
-
|
85
|
-
assert_file_exists subject.path
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
end
|