dassets 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8eb00e1656956e770b1e509f47389da503b40842
4
- data.tar.gz: f32473d4d3bc21276cc9e09dd8a0ad3ab8677614
3
+ metadata.gz: 6276fedfd2895a526ed5a1593dae1a3a1d0ae726
4
+ data.tar.gz: 248ce8d0a5548d7454fb5675296df73e52c0ad3f
5
5
  SHA512:
6
- metadata.gz: 8293311bd021e41fc50a334f38d3c8ac1a93b07147660faa0b23df81fe64299411c5b6f6e56f6ca22cacf7a4a77c5f275534c591dd11116d45961ffae5a5c75c
7
- data.tar.gz: b3b9914524b148a2809b1596c3f5c229b3ccd5a027bccc220c0629f15aebcf98b22f2b754e5a4b20a14064b97eb2e1c17003d2ec2170dad728945e7e44e65389
6
+ metadata.gz: 9428c6ed5707756a0bd9e3e81197548394d1da94735d1ccd66d4cf837a024de745bd94db73e0452fd4fdc41053aca798177bc0692cb8cc569da4e9786ed0fc95
7
+ data.tar.gz: dfa8a1d4831ba49d293650a363ac71020bb6d62cf9d54e09d3c6c9791b2b5acdb9ec9c4f7b9d4c61b85fff82b39840a35c1e838ba58bcc052af31239cc9f4a0e
@@ -5,11 +5,11 @@ require 'dassets/source_file'
5
5
  module Dassets; end
6
6
  class Dassets::SourceProxy
7
7
 
8
- attr_reader :digest_path, :source_files, :cache
8
+ attr_reader :digest_path, :cache, :source_files
9
9
 
10
10
  def initialize(digest_path, cache = nil)
11
11
  @digest_path = digest_path
12
- @cache = cache || Dassets::Cache::NoCache.new
12
+ @cache = cache || Dassets::Cache::NoCache.new
13
13
  @source_files = get_source_files(@digest_path, @cache)
14
14
  end
15
15
 
@@ -26,7 +26,7 @@ class Dassets::SourceProxy
26
26
  end
27
27
 
28
28
  def mtime
29
- @source_files.map{ |f| f.mtime }.max
29
+ @source_files.map{ |f| f.mtime }.compact.max
30
30
  end
31
31
 
32
32
  def exists?
@@ -1,3 +1,3 @@
1
1
  module Dassets
2
- VERSION = "0.10.0"
2
+ VERSION = "0.10.1"
3
3
  end
@@ -11,33 +11,33 @@ class Dassets::SourceProxy
11
11
  class UnitTests < Assert::Context
12
12
  desc "Dassets::SourceProxy"
13
13
  setup do
14
- @source_proxy = Dassets::SourceProxy.new('file1.txt')
14
+ @source_proxy = Dassets::SourceProxy.new(Factory.string)
15
15
  end
16
16
  subject{ @source_proxy }
17
17
 
18
- should have_readers :digest_path, :source_files, :cache
19
- should have_imeths :content, :fingerprint, :key, :mtime, :exists?
18
+ should have_readers :digest_path, :cache, :source_files
19
+ should have_imeths :key, :content, :fingerprint, :mtime, :exists?
20
20
 
21
- should "know its digest path" do
22
- assert_equal 'file1.txt', subject.digest_path
21
+ end
22
+
23
+ class NotComboTests < UnitTests
24
+ desc "when the digest path is not a combination"
25
+ setup do
26
+ @source_proxy = Dassets::SourceProxy.new('file1.txt')
23
27
  end
24
28
 
25
- should "know its source files" do
26
- exp_source_file = Dassets::SourceFile.find_by_digest_path('file1.txt')
27
- assert_equal 1, subject.source_files.size
28
- assert_equal exp_source_file, subject.source_files.first
29
+ should "know its digest path" do
30
+ assert_equal 'file1.txt', subject.digest_path
29
31
  end
30
32
 
31
33
  should "use a `NoCache` cache handler by default" do
32
34
  assert_kind_of Dassets::Cache::NoCache, subject.cache
33
35
  end
34
36
 
35
- should "exist if its source file exists" do
36
- assert_equal subject.source_files.first.exists?, subject.exists?
37
- end
38
-
39
- should "use its source file's mtime as its mtime" do
40
- assert_equal subject.source_files.first.mtime, subject.mtime
37
+ should "have a single source file" do
38
+ assert_equal 1, subject.source_files.size
39
+ exp_source_file = Dassets::SourceFile.find_by_digest_path('file1.txt')
40
+ assert_equal exp_source_file, subject.source_files.first
41
41
  end
42
42
 
43
43
  should "use its digest path and mtime as its key" do
@@ -45,53 +45,108 @@ class Dassets::SourceProxy
45
45
  assert_equal exp_key, subject.key
46
46
  end
47
47
 
48
- should "get its fingerprint by MD5 hashing the compiled source" do
48
+ should "get its content from the compiled source of the single source file" do
49
+ assert_equal subject.source_files.first.compiled, subject.content
50
+ end
51
+
52
+ should "get its fingerprint by MD5 hashing the content" do
49
53
  exp_fp = Digest::MD5.new.hexdigest(subject.content)
50
54
  assert_equal exp_fp, subject.fingerprint
51
55
  end
52
56
 
53
- should "get its content from the compiled source" do
54
- assert_equal subject.source_files.first.compiled, subject.content
57
+ should "use its single source file's max mtime as its mtime" do
58
+ assert_equal subject.source_files.first.mtime, subject.mtime
59
+ end
60
+
61
+ should "exist if its single source file exists" do
62
+ assert_equal subject.source_files.first.exists?, subject.exists?
55
63
  end
56
64
 
57
65
  end
58
66
 
59
- class CombinationTests < UnitTests
60
- desc "when the digest path is a combination to multiple source files"
67
+ class ComboSetupTests < UnitTests
61
68
  setup do
62
69
  Dassets.config.combination 'file3.txt', ['file1.txt', 'file2.txt']
63
- @source_proxy = Dassets::SourceProxy.new('file3.txt')
70
+ Dassets.config.combination 'file4.txt', []
71
+ Dassets.config.combination 'file5.txt', ['file3.txt', 'file4.txt']
72
+ end
73
+ teardown do
74
+ Dassets.config.combinations.delete('file5.txt')
75
+ Dassets.config.combinations.delete('file4.txt')
76
+ Dassets.config.combinations.delete('file3.txt')
77
+ end
78
+
79
+ end
80
+
81
+ class ComboTests < ComboSetupTests
82
+ desc "when the digest path is a combination to multiple source files"
83
+ setup do
64
84
  @exp_source_files = [
65
85
  Dassets::SourceFile.find_by_digest_path('file1.txt'),
66
86
  Dassets::SourceFile.find_by_digest_path('file2.txt')
67
87
  ]
68
- end
69
- teardown do
70
- Dassets.config.combinations.delete('file3.txt')
88
+ @source_proxy = Dassets::SourceProxy.new('file3.txt')
71
89
  end
72
90
 
73
91
  should "know its digest path" do
74
92
  assert_equal 'file3.txt', subject.digest_path
75
93
  end
76
94
 
77
- should "know its source file" do
95
+ should "know its source files" do
78
96
  assert_equal 2, subject.source_files.size
79
97
  assert_equal @exp_source_files, subject.source_files
80
98
  end
81
99
 
82
- should "exist if its source file exists" do
83
- exp_exists = @exp_source_files.inject(true){ |res, f| res && f.exists? }
84
- assert_equal exp_exists, subject.exists?
100
+ should "get its content from the compiled source of its source files" do
101
+ exp_content = subject.source_files.map{ |f| f.compiled }.join("\n")
102
+ assert_equal exp_content, subject.content
85
103
  end
86
104
 
87
- should "use its source file's mtime as its mtime" do
88
- exp_mtime = @exp_source_files.map{ |f| f.mtime }.max
105
+ should "use its source files' max mtime as its mtime" do
106
+ exp_mtime = subject.source_files.map{ |f| f.mtime }.max
89
107
  assert_equal exp_mtime, subject.mtime
90
108
  end
91
109
 
92
- should "get its content from the compiled source" do
93
- exp_content = @exp_source_files.map{ |f| f.compiled }.join("\n")
94
- assert_equal exp_content, subject.content
110
+ should "exist if its all its source files exist" do
111
+ exp_exists = subject.source_files.inject(true){ |res, f| res && f.exists? }
112
+ assert_equal exp_exists, subject.exists?
113
+ end
114
+
115
+ end
116
+
117
+ class EmptyComboTests < ComboSetupTests
118
+ desc "when the digest path is an empty combination"
119
+ setup do
120
+ @source_proxy = Dassets::SourceProxy.new('file4.txt')
121
+ end
122
+
123
+ should "not have any source files" do
124
+ assert_equal 0, subject.source_files.size
125
+ end
126
+
127
+ should "have empty content" do
128
+ assert_equal '', subject.content
129
+ end
130
+
131
+ should "have no mtime" do
132
+ assert_nil subject.mtime
133
+ end
134
+
135
+ should "exist" do
136
+ assert_true subject.exists?
137
+ end
138
+
139
+ end
140
+
141
+ class ComboWithEmptyComboTests < ComboSetupTests
142
+ desc "when the digest path is a combination that includes an empty combination"
143
+ setup do
144
+ @source_proxy = Dassets::SourceProxy.new('file5.txt')
145
+ end
146
+
147
+ should "ignore the mtime of the empty combination" do
148
+ exp_mtime = subject.source_files.map{ |f| f.mtime }.compact.max
149
+ assert_equal exp_mtime, subject.mtime
95
150
  end
96
151
 
97
152
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dassets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelly Redding
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-29 00:00:00.000000000 Z
12
+ date: 2015-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: assert