serif 0.5.2 → 0.6
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.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +58 -21
- data/LICENSE +1 -1
- data/README.md +11 -13
- data/lib/serif.rb +3 -2
- data/lib/serif/admin_server.rb +10 -10
- data/lib/serif/commands.rb +2 -2
- data/lib/serif/config.rb +1 -1
- data/lib/serif/content_file.rb +9 -9
- data/lib/serif/draft.rb +1 -1
- data/lib/serif/errors.rb +1 -1
- data/lib/serif/markup_renderer.rb +28 -17
- data/lib/serif/post.rb +1 -1
- data/lib/serif/server.rb +1 -1
- data/lib/serif/site.rb +5 -29
- data/rakefile +3 -6
- data/serif.gemspec +9 -3
- data/statics/assets/js/attachment.js +3 -3
- data/statics/skeleton/_config.yml +1 -1
- data/statics/skeleton/_layouts/default.html +1 -1
- data/statics/skeleton/_templates/archive_page.html +1 -1
- data/statics/skeleton/_templates/post.html +1 -1
- data/statics/skeleton/archive.html +1 -1
- data/statics/skeleton/index.html +1 -1
- data/statics/templates/admin/bookmarks.liquid +1 -1
- data/statics/templates/admin/edit_draft.liquid +1 -1
- data/statics/templates/admin/index.liquid +1 -1
- data/statics/templates/admin/layout.liquid +6 -4
- data/statics/templates/admin/new_draft.liquid +1 -1
- metadata +123 -127
- data/test/commands_spec.rb +0 -77
- data/test/config_spec.rb +0 -55
- data/test/content_file_spec.rb +0 -113
- data/test/draft_spec.rb +0 -275
- data/test/file_digest_tag_spec.rb +0 -38
- data/test/filters_spec.rb +0 -90
- data/test/liquid_filter_date_extension_spec.rb +0 -15
- data/test/markup_renderer_spec.rb +0 -47
- data/test/post_spec.rb +0 -139
- data/test/site_dir/_config.yml +0 -18
- data/test/site_dir/_drafts/another-sample-draft +0 -3
- data/test/site_dir/_drafts/sample-draft +0 -3
- data/test/site_dir/_layouts/alt-layout.html +0 -3
- data/test/site_dir/_layouts/default.html +0 -8
- data/test/site_dir/_posts/2012-01-05-sample-post +0 -4
- data/test/site_dir/_posts/2013-01-01-second-post +0 -4
- data/test/site_dir/_posts/2013-03-07-post-with-custom-layout +0 -5
- data/test/site_dir/_posts/2399-01-01-penultimate-post +0 -4
- data/test/site_dir/_posts/2400-01-01-final-post +0 -4
- data/test/site_dir/_templates/archive_page.html +0 -9
- data/test/site_dir/_templates/post.html +0 -10
- data/test/site_dir/archive.html +0 -7
- data/test/site_dir/file-digest-test.html +0 -4
- data/test/site_dir/index.html +0 -9
- data/test/site_dir/page-alt-layout.html +0 -3
- data/test/site_dir/page-header-but-no-layout.html +0 -3
- data/test/site_dir/test-smarty-filter.html +0 -3
- data/test/site_dir/test-stylesheet.css +0 -3
- data/test/site_generation_spec.rb +0 -204
- data/test/site_spec.rb +0 -189
- data/test/test_helper.rb +0 -61
data/test/commands_spec.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class Serif::Commands
|
4
|
-
def exit(code)
|
5
|
-
"Fake exit with code #{code}"
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe Serif::Commands do
|
10
|
-
def expect_method_call(arg, method)
|
11
|
-
c = Serif::Commands.new([arg])
|
12
|
-
c.should_receive(method)
|
13
|
-
capture_stdout { c.process }
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#process" do
|
17
|
-
it "takes -h and --help and calls print usage" do
|
18
|
-
%w[-h --help].each do |cmd|
|
19
|
-
expect_method_call(cmd, :print_help)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
{
|
24
|
-
"admin" => :initialize_admin_server,
|
25
|
-
"dev" => :initialize_dev_server,
|
26
|
-
"new" => :produce_skeleton,
|
27
|
-
"generate" => :generate_site
|
28
|
-
}.each do |command, meth|
|
29
|
-
it "takes the command '#{command}' and runs #{meth}" do
|
30
|
-
expect_method_call(command, meth)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
it "exits on help" do
|
35
|
-
expect_method_call("-h", :exit)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#generate_site" do
|
40
|
-
it "calls Site#generate" do
|
41
|
-
Serif::Site.stub(:generation_called)
|
42
|
-
Serif::Site.any_instance.stub(:generate) { Serif::Site.generation_called }
|
43
|
-
|
44
|
-
# if this is called, it means any instance of Site had #generate called.
|
45
|
-
Serif::Site.should_receive(:generation_called)
|
46
|
-
|
47
|
-
Serif::Commands.new([]).generate_site("anything")
|
48
|
-
end
|
49
|
-
|
50
|
-
context "with a conflict" do
|
51
|
-
def conflicting_generate_command
|
52
|
-
a = b = double("")
|
53
|
-
a.stub(:url) { "/foo" }
|
54
|
-
b.stub(:url) { "/foo" }
|
55
|
-
a.stub(:path) { "/anything" }
|
56
|
-
b.stub(:path) { "/anything" }
|
57
|
-
|
58
|
-
# any non-nil value will do
|
59
|
-
Serif::Site.any_instance.stub(:conflicts) { { "/foo" => [a, b] } }
|
60
|
-
|
61
|
-
command = Serif::Commands.new([])
|
62
|
-
command.generate_site(testing_dir)
|
63
|
-
command.should_receive(:exit)
|
64
|
-
command
|
65
|
-
end
|
66
|
-
|
67
|
-
it "exits" do
|
68
|
-
capture_stdout { conflicting_generate_command.process }
|
69
|
-
end
|
70
|
-
|
71
|
-
it "prints the urls that conflict" do
|
72
|
-
output = capture_stdout { conflicting_generate_command.process }
|
73
|
-
output.should match(/Conflicts at:\n\n\/foo\n\t\/anything\n\t\/anything/)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/test/config_spec.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
describe Serif::Config do
|
4
|
-
subject do
|
5
|
-
Serif::Config.new(testing_dir("_config.yml"))
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "#admin_username" do
|
9
|
-
it "is the admin username defined in the config file" do
|
10
|
-
subject.admin_username.should == "test-changethisusername"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "#admin_password" do
|
15
|
-
it "is the admin password defined in the config file" do
|
16
|
-
subject.admin_password.should == "test-changethispassword"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#image_upload_path" do
|
21
|
-
it "defaults to /images/:timestamp/_name" do
|
22
|
-
subject.stub(:yaml) { {} }
|
23
|
-
subject.image_upload_path.should == "/images/:timestamp_:name"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe "#permalink" do
|
28
|
-
it "is the permalink format defined in the config file" do
|
29
|
-
subject.permalink.should == "/test-blog/:title"
|
30
|
-
end
|
31
|
-
|
32
|
-
it "defaults to /:title" do
|
33
|
-
subject.stub(:yaml) { {} }
|
34
|
-
subject.permalink.should == "/:title"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#archive_url_format" do
|
39
|
-
it "defaults to /archive/:year/:month" do
|
40
|
-
subject.stub(:yaml) { {} }
|
41
|
-
subject.archive_url_format.should == "/archive/:year/:month"
|
42
|
-
end
|
43
|
-
|
44
|
-
it "is the archive_url_format found in the config file" do
|
45
|
-
subject.archive_url_format.should == "/test-archive/:year/:month"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe "#archive_enabled?" do
|
50
|
-
it "defaults to false" do
|
51
|
-
subject.stub(:yaml) { {} }
|
52
|
-
subject.archive_enabled?.should be_false
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
data/test/content_file_spec.rb
DELETED
@@ -1,113 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
describe Serif::ContentFile do
|
4
|
-
subject do
|
5
|
-
Serif::Site.new(testing_dir)
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "#basename" do
|
9
|
-
it "is the basename of the path" do
|
10
|
-
(subject.drafts + subject.posts).each do |content_file|
|
11
|
-
content_file.basename.should == File.basename(content_file.path)
|
12
|
-
end
|
13
|
-
|
14
|
-
draft = Serif::Draft.new(subject)
|
15
|
-
draft.slug = "foo"
|
16
|
-
draft.title = "foo"
|
17
|
-
|
18
|
-
# NOTE! Freezing!
|
19
|
-
Timecop.freeze(Time.parse("2013-04-03"))
|
20
|
-
|
21
|
-
draft.save
|
22
|
-
draft.publish!
|
23
|
-
post = Serif::Post.new(subject, draft.path)
|
24
|
-
|
25
|
-
begin
|
26
|
-
draft.path.should_not be_nil
|
27
|
-
post.should_not be_nil
|
28
|
-
draft.basename.should == post.basename
|
29
|
-
|
30
|
-
# NOTE! Time frozen!
|
31
|
-
post.basename.should == "2013-04-03-foo"
|
32
|
-
ensure
|
33
|
-
Timecop.return
|
34
|
-
FileUtils.rm(post.path)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "draft and published status" do
|
40
|
-
it "can handle a nil path" do
|
41
|
-
c = Serif::ContentFile.new(subject)
|
42
|
-
c.path.should be_nil
|
43
|
-
c.draft?.should be_true
|
44
|
-
c.published?.should be_false
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "draft?" do
|
49
|
-
it "is true if the file is in the _drafts directory" do
|
50
|
-
subject.drafts.each do |d|
|
51
|
-
d.draft?.should be_true
|
52
|
-
d.published?.should be_false
|
53
|
-
end
|
54
|
-
|
55
|
-
d = subject.drafts.sample
|
56
|
-
orig_path = d.path
|
57
|
-
d.stub(:path) { orig_path.gsub(/^#{Regexp.quote(testing_dir("_drafts"))}/, testing_dir("_anything")) }
|
58
|
-
d.draft?.should be_false
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "published?" do
|
63
|
-
it "can handle a nil path" do
|
64
|
-
d = Serif::Post.new(subject)
|
65
|
-
d.draft?.should be_true
|
66
|
-
d.published?.should be_false
|
67
|
-
end
|
68
|
-
|
69
|
-
it "is true if the file is in the _posts directory" do
|
70
|
-
subject.posts.each do |p|
|
71
|
-
p.published?.should be_true
|
72
|
-
p.draft?.should be_false
|
73
|
-
end
|
74
|
-
|
75
|
-
p = subject.posts.sample
|
76
|
-
orig_path = p.path
|
77
|
-
p.stub(:path) { orig_path.gsub(/^#{Regexp.quote(testing_dir("_posts"))}/, testing_dir("_anything")) }
|
78
|
-
p.published?.should be_false
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe "#title=" do
|
83
|
-
it "sets the underlying header value to the assigned title" do
|
84
|
-
(subject.drafts + subject.posts).each do |content_file|
|
85
|
-
content_file.title = "foobar"
|
86
|
-
content_file.headers[:title].should == "foobar"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "#save(markdown)" do
|
92
|
-
it "sets the underlying updated time value for posts" do
|
93
|
-
draft = Serif::Draft.new(subject)
|
94
|
-
draft.title = "Testing"
|
95
|
-
draft.slug = "hi"
|
96
|
-
|
97
|
-
begin
|
98
|
-
draft.save("# Some content")
|
99
|
-
draft.publish!
|
100
|
-
|
101
|
-
post = Serif::Post.new(subject, draft.path)
|
102
|
-
|
103
|
-
t = Time.now
|
104
|
-
Timecop.freeze(t + 30) do
|
105
|
-
post.save("# Heading content")
|
106
|
-
post.updated.to_i.should == (t + 30).to_i
|
107
|
-
end
|
108
|
-
ensure
|
109
|
-
FileUtils.rm(post.path)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
data/test/draft_spec.rb
DELETED
@@ -1,275 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
describe Serif::Draft do
|
4
|
-
before :all do
|
5
|
-
@site = Serif::Site.new(testing_dir)
|
6
|
-
D = Serif::Draft
|
7
|
-
FileUtils.rm_rf(testing_dir("_trash"))
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "#url" do
|
11
|
-
it "uses the current time for its placeholder values" do
|
12
|
-
d = D.new(@site)
|
13
|
-
d.slug = "my-blar-blar"
|
14
|
-
orig_headers = d.headers
|
15
|
-
d.stub(:headers) { orig_headers.merge(:permalink => "/foo/:year/:month/:day/:title") }
|
16
|
-
|
17
|
-
Timecop.freeze(Time.parse("2020-02-09")) do
|
18
|
-
d.url.should == "/foo/2020/02/09/my-blar-blar"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "can handle nil slug values" do
|
23
|
-
d = D.new(@site)
|
24
|
-
d.slug.should be_nil
|
25
|
-
orig_headers = d.headers
|
26
|
-
d.stub(:headers) { orig_headers.merge(:permalink => "/foo/:year/:month/:day/:title") }
|
27
|
-
|
28
|
-
Timecop.freeze(Time.parse("2020-02-09")) do
|
29
|
-
d.url.should == "/foo/2020/02/09/"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
it "defaults to the config file's permalink value" do
|
34
|
-
d = D.new(@site)
|
35
|
-
d.slug = "gablarhgle"
|
36
|
-
d.url.should == "/test-blog/gablarhgle"
|
37
|
-
end
|
38
|
-
|
39
|
-
it "uses its permalink header value" do
|
40
|
-
d = D.new(@site)
|
41
|
-
d.slug = "anything"
|
42
|
-
d.stub(:headers) { { :permalink => "testage" } }
|
43
|
-
d.url.should == "testage"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe ".rename" do
|
48
|
-
it "moves the draft to a new file" do
|
49
|
-
draft = D.new(@site)
|
50
|
-
draft.slug = "test-draft"
|
51
|
-
draft.title = "Some draft title"
|
52
|
-
draft.save("some content")
|
53
|
-
|
54
|
-
D.rename(@site, "test-draft", "foo-bar")
|
55
|
-
d = D.from_slug(@site, "foo-bar")
|
56
|
-
d.should_not be_nil
|
57
|
-
File.exist?(testing_dir("_drafts/foo-bar")).should be_true
|
58
|
-
|
59
|
-
d.delete!
|
60
|
-
end
|
61
|
-
|
62
|
-
it "raises if there is an existing draft" do
|
63
|
-
draft = D.new(@site)
|
64
|
-
draft.slug = "test-draft"
|
65
|
-
draft.title = "Some draft title"
|
66
|
-
draft.save("some content")
|
67
|
-
|
68
|
-
draft2 = D.new(@site)
|
69
|
-
draft2.slug = "test-draft-2"
|
70
|
-
draft2.title = "Some draft title"
|
71
|
-
draft2.save("some content")
|
72
|
-
|
73
|
-
expect { D.rename(@site, draft2.slug, draft.slug) }.to raise_error
|
74
|
-
|
75
|
-
draft.delete!
|
76
|
-
draft2.delete!
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "#delete!" do
|
81
|
-
it "moves the file to _trash" do
|
82
|
-
draft = D.new(@site)
|
83
|
-
draft.slug = "test-draft"
|
84
|
-
draft.title = "Some draft title"
|
85
|
-
draft.save("some content")
|
86
|
-
draft.delete!
|
87
|
-
Dir[testing_dir("_trash/*-test-draft")].length.should == 1
|
88
|
-
end
|
89
|
-
|
90
|
-
it "creates the _trash directory if it doesn't exist" do
|
91
|
-
FileUtils.rm_rf(testing_dir("_trash"))
|
92
|
-
|
93
|
-
draft = D.new(@site)
|
94
|
-
draft.slug = "test-draft"
|
95
|
-
draft.title = "Some draft title"
|
96
|
-
draft.save("some content")
|
97
|
-
draft.delete!
|
98
|
-
|
99
|
-
File.exist?(testing_dir("_trash")).should be_true
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
describe "publish!" do
|
104
|
-
it "moves the file to the _posts directory" do
|
105
|
-
draft = D.new(@site)
|
106
|
-
draft.slug = "test-draft"
|
107
|
-
draft.title = "Some draft title"
|
108
|
-
draft.save("some content")
|
109
|
-
draft.publish!
|
110
|
-
|
111
|
-
published_path = testing_dir("_posts/#{Date.today.to_s}-#{draft.slug}")
|
112
|
-
File.exist?(published_path).should be_true
|
113
|
-
|
114
|
-
# clean up
|
115
|
-
FileUtils.rm_f(published_path)
|
116
|
-
end
|
117
|
-
|
118
|
-
it "creates the posts directory if it doens't already exist" do
|
119
|
-
draft = D.new(@site)
|
120
|
-
draft.slug = "test-draft"
|
121
|
-
draft.title = "Some draft title"
|
122
|
-
draft.save("some content")
|
123
|
-
|
124
|
-
FileUtils.should_receive(:mkdir_p).with(testing_dir("_posts")).and_call_original
|
125
|
-
|
126
|
-
begin
|
127
|
-
draft.publish!
|
128
|
-
ensure
|
129
|
-
FileUtils.rm(draft.path)
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
it "makes the post available in Site#posts and Site#to_liquid even straight after a generate" do
|
134
|
-
draft = D.new(@site)
|
135
|
-
draft.slug = "test-draft-to-go-into-liquid"
|
136
|
-
draft.title = "Some draft title"
|
137
|
-
draft.save("some content")
|
138
|
-
published_path = testing_dir("_posts/#{Date.today.to_s}-#{draft.slug}")
|
139
|
-
|
140
|
-
begin
|
141
|
-
capture_stdout { @site.generate }
|
142
|
-
@site.posts.first.slug.should_not == draft.slug
|
143
|
-
@site.to_liquid["posts"].first.slug.should_not == draft.slug
|
144
|
-
draft.publish!
|
145
|
-
capture_stdout { @site.generate }
|
146
|
-
@site.posts.first.slug.should == draft.slug
|
147
|
-
@site.to_liquid["posts"].first.slug.should == draft.slug
|
148
|
-
rescue
|
149
|
-
# clean up
|
150
|
-
FileUtils.rm_f(published_path)
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
it "changes the #path to be _posts not _drafts" do
|
155
|
-
draft = D.new(@site)
|
156
|
-
draft.slug = "test-draft"
|
157
|
-
draft.title = "Some draft title"
|
158
|
-
draft.save("some content")
|
159
|
-
draft.publish!
|
160
|
-
|
161
|
-
draft.path.should == testing_dir("_posts/#{Date.today.to_s}-#{draft.slug}")
|
162
|
-
draft.delete! # still deleteable, even though it's been moved
|
163
|
-
end
|
164
|
-
|
165
|
-
it "does not write out an autopublish header if autopublish? is true" do
|
166
|
-
draft = D.new(@site)
|
167
|
-
draft.slug = "autopublish-draft"
|
168
|
-
draft.title = "Some draft title"
|
169
|
-
draft.autopublish = true
|
170
|
-
draft.save("some content")
|
171
|
-
draft.publish!
|
172
|
-
|
173
|
-
# check the header on the object has been removed
|
174
|
-
draft.autopublish?.should be_false
|
175
|
-
|
176
|
-
# check the actual file doesn't have the header
|
177
|
-
Serif::Post.new(@site, draft.path).headers[:publish].should be_nil
|
178
|
-
|
179
|
-
draft.delete!
|
180
|
-
end
|
181
|
-
end
|
182
|
-
|
183
|
-
describe "#autopublish=" do
|
184
|
-
it "sets the 'publish' header to 'now' if truthy assigned value" do
|
185
|
-
draft = D.new(@site)
|
186
|
-
draft.slug = "test-draft"
|
187
|
-
draft.title = "Some draft title"
|
188
|
-
draft.save("some content")
|
189
|
-
draft.autopublish = true
|
190
|
-
|
191
|
-
draft.headers[:publish].should == "now"
|
192
|
-
|
193
|
-
draft.delete!
|
194
|
-
end
|
195
|
-
|
196
|
-
it "removes the 'publish' header entirely if falsey assigned value" do
|
197
|
-
draft = D.new(@site)
|
198
|
-
draft.slug = "test-draft"
|
199
|
-
draft.title = "Some draft title"
|
200
|
-
draft.save("some content")
|
201
|
-
draft.autopublish = false
|
202
|
-
|
203
|
-
draft.headers.key?(:publish).should be_false
|
204
|
-
|
205
|
-
draft.delete!
|
206
|
-
end
|
207
|
-
|
208
|
-
it "carries its value through to #autopublish?" do
|
209
|
-
draft = D.new(@site)
|
210
|
-
draft.slug = "test-draft"
|
211
|
-
draft.title = "Some draft title"
|
212
|
-
draft.autopublish = false
|
213
|
-
draft.autopublish?.should be_false
|
214
|
-
|
215
|
-
draft.autopublish = true
|
216
|
-
draft.autopublish?.should be_true
|
217
|
-
|
218
|
-
draft.autopublish = false
|
219
|
-
draft.autopublish?.should be_false
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
describe "#autopublish?" do
|
224
|
-
it "returns true if there is a 'publish: now' header, otherwise false" do
|
225
|
-
draft = D.new(@site)
|
226
|
-
draft.autopublish?.should be_false
|
227
|
-
headers = draft.headers
|
228
|
-
draft.stub(:headers) { headers.merge(:publish => "now") }
|
229
|
-
draft.autopublish?.should be_true
|
230
|
-
end
|
231
|
-
|
232
|
-
it "ignores leading and trailing whitespace around the value of the 'publish' header" do
|
233
|
-
draft = D.new(@site)
|
234
|
-
draft.autopublish?.should be_false
|
235
|
-
headers = draft.headers
|
236
|
-
draft.stub(:headers) { headers.merge(:publish => " now ") }
|
237
|
-
draft.autopublish?.should be_true
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe "#to_liquid" do
|
242
|
-
it "contains the relevant keys" do
|
243
|
-
liq = @site.drafts.sample.to_liquid
|
244
|
-
|
245
|
-
["title", "content", "slug", "type", "draft", "published", "url"].each do |e|
|
246
|
-
liq.key?(e).should be_true
|
247
|
-
end
|
248
|
-
end
|
249
|
-
|
250
|
-
context "for an initial draft" do
|
251
|
-
it "works fine" do
|
252
|
-
expect { Serif::Draft.new(@site).to_liquid }.to_not raise_error
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
describe "#save" do
|
258
|
-
it "saves the file to _drafts" do
|
259
|
-
draft = D.new(@site)
|
260
|
-
draft.slug = "test-draft"
|
261
|
-
draft.title = "Some draft title"
|
262
|
-
|
263
|
-
D.exist?(@site, draft.slug).should be_false
|
264
|
-
File.exist?(testing_dir("_drafts/test-draft")).should be_false
|
265
|
-
|
266
|
-
draft.save("some content")
|
267
|
-
|
268
|
-
D.exist?(@site, draft.slug).should be_true
|
269
|
-
File.exist?(testing_dir("_drafts/test-draft")).should be_true
|
270
|
-
|
271
|
-
# clean up the file
|
272
|
-
draft.delete!
|
273
|
-
end
|
274
|
-
end
|
275
|
-
end
|