paste 0.2.2 → 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.
@@ -1,106 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Paste::JS::Base do
4
-
5
- it "should render an erb file into a temporary location" do
6
- Paste::JS::Test.write 'foo.js.erb', ''
7
- subject.render_all_erb
8
-
9
- subject.erb_path('foo.js').should exist
10
- end
11
-
12
- it "should execute the ERB in the file" do
13
- Paste::JS::Test.write 'foo.js.erb', '<%= "foo" %><%= "bar" %>'
14
- subject.render_all_erb
15
-
16
- subject.erb_path('foo.js').should have_contents('foobar')
17
- end
18
-
19
- it "should handle deeply nested erb files alright" do
20
- Paste::JS::Test.write 'foo/bar/baz.js.erb', '<%= "foo" %><%= "bar" %>'
21
- subject.render_all_erb
22
-
23
- subject.erb_path('foo/bar/baz.js').should have_contents('foobar')
24
- end
25
-
26
- it "shouldn't try to render regular js files" do
27
- Paste::JS::Test.write 'foo', 'foo()'
28
- subject.render_all_erb
29
-
30
- subject.erb_path('foo.js').should_not exist
31
- end
32
-
33
- it "should render when being rebuilt" do
34
- Paste::JS::Test.write 'foo.js.erb', 'foobar'
35
- subject.rebuild!
36
-
37
- subject.erb_path('foo.js').should have_contents('foobar')
38
- end
39
-
40
- context "pasting a variety of regular/erb files" do
41
- shared_examples_for 'an erb paster' do
42
- it "should use the generated ERB file when pasting" do
43
- Paste::JS::Test.write 'foo.js.erb', '<%= "foo" %><%= "bar" %>'
44
- Paste::JS::Test.write 'bar', "//= require <foo>\nbar()"
45
- subject.render_all_erb
46
-
47
- subject.paste('bar')
48
- end
49
-
50
- it "should watch for a file to be changed to an ERB file" do
51
- Paste::JS::Test.write 'foo', 'foo'
52
- result = subject.paste('foo')[:javascript]
53
- result.each{ |p| Paste::JS::Test.delete p }
54
- Paste::JS::Test.delete_source 'foo'
55
-
56
- Paste::JS::Test.write 'foo.js.erb', '<%= "foo" %><%= "bar" %>'
57
- subject.render_all_erb
58
-
59
- subject.paste('foo')
60
- end
61
- end
62
-
63
- describe Paste::JS::Chain do
64
- it_should_behave_like 'an erb paster'
65
- end
66
-
67
- describe Paste::JS::Unify do
68
- it_should_behave_like 'an erb paster'
69
- end
70
- end
71
-
72
- describe "modifying existing files" do
73
- before :each do
74
- Paste::JS::Test.write subject.erb_path('foo.js'), 'foo'
75
- end
76
-
77
- it "should regenerate the file if the source was modified" do
78
- # File is modified after the original one
79
- Paste::JS::Test.write 'foo.js.erb', 'foobar', Time.now + 42
80
-
81
- subject.render_all_erb
82
-
83
- subject.erb_path('foo.js').should have_contents('foobar')
84
- end
85
-
86
- it "should not regenerate the file if the source was not modified" do
87
- Paste::JS::Test.write 'foo.js.erb', 'foobar', Time.now - 42
88
- subject.render_all_erb
89
-
90
- subject.erb_path('foo.js').should have_contents('foo')
91
- end
92
- end
93
-
94
- context "rails" do
95
- before :each do
96
- Rails = {:foo => 'bar'}
97
- end
98
-
99
- it "should allow templates to use Rails instead of ::Rails" do
100
- Paste::JS::Test.write 'foo.js.erb', '<%= Rails[:foo] %>'
101
- subject.render_all_erb
102
-
103
- subject.erb_path('foo.js').should have_contents('bar')
104
- end
105
- end
106
- end
@@ -1,90 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Paste::JS::Unify do
4
- before :each do
5
- Paste::JS::Test.write 'foo', 'foo()'
6
- Paste::JS::Test.write 'bar', 'bar()'
7
- Paste::JS::Test.write 'foo/baz', 'baz()'
8
- end
9
-
10
- it "should generate only one result" do
11
- results = subject.paste('foo', 'bar', 'foo/baz')[:javascript]
12
-
13
- results.size.should == 1
14
- end
15
-
16
- it "should generate the same results for different forms of the input" do
17
- results = subject.paste('foo', 'bar', 'foo/baz')
18
-
19
- results.should == subject.paste('foo', 'foo/baz.js', 'bar.js')
20
- results.should == subject.paste('bar', 'foo.js', 'foo/baz')
21
- end
22
-
23
- it "should generate the concatenation when the destination doesn't exist" do
24
- result = subject.paste('foo', 'bar', 'foo/baz')[:javascript].first
25
-
26
- subject.should have_in_result(result, "foo()\nbar()\nbaz()")
27
- end
28
-
29
- it "should rebuild the results after the file has been removed" do
30
- result = subject.paste('foo', 'bar', 'foo/baz')[:javascript].first
31
-
32
- Paste::JS::Test.delete result
33
- subject.paste('foo', 'bar', 'foo/baz')
34
-
35
- subject.should have_in_result(result, "foo()\nbar()\nbaz()")
36
- end
37
-
38
- it "should raise a descriptive exception when the source doesn't exist" do
39
- lambda {
40
- subject.paste 'random'
41
- }.should raise_error(/source random/i)
42
- end
43
-
44
- describe "regenerating files" do
45
- it "should occur if any file is changed" do
46
- result = subject.paste('foo', 'bar')[:javascript].first
47
-
48
- Paste::JS::Test.write 'foo', 'foobar()', Time.now + 42
49
- subject.paste('foo', 'bar')
50
-
51
- subject.should have_in_result(result, "foobar()\nbar()")
52
- end
53
-
54
- it "should not occur if no files have changed" do
55
- result = subject.paste('foo', 'bar')[:javascript].first
56
-
57
- Paste::JS::Test.write 'foo', 'foobar', Time.now - 42
58
- subject.paste('foo', 'bar')
59
-
60
- subject.should have_in_result(result, "foo()\nbar()")
61
- end
62
-
63
- it "should update the results only if the sources have changed" do
64
- subject = described_class.new
65
-
66
- result1 = subject.paste('foo')[:javascript].first
67
- result2 = subject.paste('bar', 'foo/baz')[:javascript].first
68
- Paste::JS::Test.write 'foo', 'foobar()', Time.now - 42
69
- Paste::JS::Test.write 'bar', 'barbar()', Time.now + 42
70
-
71
- subject.rebuild
72
-
73
- subject.should have_in_result(result1, 'foo()')
74
- subject.should have_in_result(result2, "barbar()\nbaz()")
75
- end
76
-
77
- it "should watch for changes in dependencies as well" do
78
- Paste::JS::Test.write 'foo', "//= require <bar>\nfoo"
79
- Paste::JS::Test.write 'bar', 'bar'
80
- Paste::JS::Test.write 'baz', 'baz'
81
- result = subject.paste('foo')[:javascript].first
82
-
83
- Paste::JS::Test.write 'bar', "//= require <baz>\nbar", Time.now + 42
84
-
85
- subject.paste('foo')
86
-
87
- subject.should have_in_result(result, "baz\nbar\nfoo")
88
- end
89
- end
90
- end