2018-04-10 18:11:33 +02:00
|
|
|
require 'rails_helper'
|
|
|
|
|
|
|
|
RSpec.describe Post, type: :model do
|
|
|
|
|
|
|
|
describe "creation" do
|
|
|
|
it "ok with valid slug" do
|
|
|
|
post = Post.new("_1993-2-4-title")
|
|
|
|
expect(post).not_to eq nil
|
|
|
|
end
|
|
|
|
it "raises with invalid slug" do
|
|
|
|
expect{Post.new("_1993-4-title")}.to raise_error RuntimeError
|
|
|
|
end
|
|
|
|
it "must start with a year" do
|
|
|
|
expect{Post.new("_no-num-4-title")}.to raise_error RuntimeError
|
|
|
|
end
|
|
|
|
it "must start with a underscore" do
|
|
|
|
expect{Post.new("_no-num-4-title")}.to raise_error RuntimeError
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "basic api" do
|
|
|
|
before :each do
|
|
|
|
@post = Post.new("_1993-2-4-title")
|
|
|
|
end
|
|
|
|
it "returns title" do
|
|
|
|
expect(@post.title).to eq "title"
|
|
|
|
end
|
|
|
|
it "returns dates" do
|
|
|
|
expect(@post.year).to eq 1993
|
2018-04-10 19:00:56 +02:00
|
|
|
expect(@post.day).to eq 4
|
|
|
|
expect(@post.month).to eq 2
|
2018-04-10 18:11:33 +02:00
|
|
|
end
|
|
|
|
it "returns date" do
|
2018-04-22 12:35:13 +02:00
|
|
|
expect(@post.date).to eq Date.new(1993,2,4)
|
2018-04-10 18:11:33 +02:00
|
|
|
end
|
|
|
|
it "returns file_name" do
|
2018-04-22 12:35:13 +02:00
|
|
|
expect(@post.template_name).to eq "1993-02-04-title"
|
2018-04-10 18:11:33 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "precise api definition" do
|
|
|
|
it "returns whole title" do
|
|
|
|
post = Post.new("_1993-2-4-Multi-word-title")
|
|
|
|
expect(post.title).to eq "Multi word title"
|
|
|
|
end
|
|
|
|
it "returns slug" do
|
|
|
|
post = Post.new("_1993-2-4-Multi-word-title")
|
|
|
|
expect(post.slug).to eq "multi-word-title"
|
|
|
|
end
|
|
|
|
it "returns title without extension if given file name" do
|
|
|
|
post = Post.new("_1993-2-4-title.rb")
|
|
|
|
expect(post.title).to eq "title"
|
|
|
|
end
|
|
|
|
it 'slugs are downcase' do
|
|
|
|
post = Post.new("_1993-2-4-Multi-word-title")
|
|
|
|
slug = post.slug
|
|
|
|
expect(slug.downcase).to eq slug
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "post list" do
|
|
|
|
before :each do
|
|
|
|
@posts = Post.posts
|
|
|
|
@first = @posts.values.first
|
|
|
|
end
|
|
|
|
it "reads config path" do
|
|
|
|
expect(Post.blog_path.include?("app")).to eq true
|
|
|
|
end
|
|
|
|
it "first post has content" do
|
|
|
|
expect(@posts.values.first).not_to be_nil
|
|
|
|
expect(@posts.values.first.content.length).to be > 10
|
|
|
|
end
|
|
|
|
it "return a list of posts" do
|
|
|
|
expect(@posts.class).to eq Hash
|
|
|
|
expect(@posts.length).to be > 0
|
|
|
|
end
|
|
|
|
it "post template exists" do
|
|
|
|
file = Post.blog_path + "/_" + @first.template_name + ".haml"
|
|
|
|
expect(File.exists?(file)).to eq true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|