spree_essential_blog 0.1.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +7 -0
- data/.travis.yml +12 -0
- data/Gemfile +2 -0
- data/LICENSE +27 -0
- data/README.md +126 -0
- data/Rakefile +21 -0
- data/Versionfile +5 -0
- data/app/controllers/blog/admin/disqus_settings_controller.rb +22 -0
- data/app/controllers/blog/admin/post_categories_controller.rb +20 -0
- data/app/controllers/blog/admin/post_images_controller.rb +37 -0
- data/app/controllers/blog/admin/post_products_controller.rb +25 -0
- data/app/controllers/blog/admin/posts_controller.rb +32 -0
- data/app/controllers/blog/post_categories_controller.rb +23 -0
- data/app/controllers/blog/posts_controller.rb +60 -0
- data/app/controllers/pages_controller_decorator.rb +5 -0
- data/app/helpers/blog/posts_helper.rb +24 -0
- data/app/models/blog_configuration.rb +10 -0
- data/app/models/post.rb +87 -0
- data/app/models/post_category.rb +33 -0
- data/app/models/post_image.rb +45 -0
- data/app/models/post_product.rb +9 -0
- data/app/overrides/spree_essential_blog.rb +5 -0
- data/app/validators/datetime_validator.rb +6 -0
- data/app/views/blog/admin/configurations/_disqus_config.html.erb +4 -0
- data/app/views/blog/admin/disqus_settings/edit.html.erb +16 -0
- data/app/views/blog/admin/disqus_settings/show.html.erb +14 -0
- data/app/views/blog/admin/post_categories/_form.html.erb +8 -0
- data/app/views/blog/admin/post_categories/edit.html.erb +11 -0
- data/app/views/blog/admin/post_categories/index.html.erb +45 -0
- data/app/views/blog/admin/post_categories/new.html.erb +10 -0
- data/app/views/blog/admin/post_images/_form.html.erb +8 -0
- data/app/views/blog/admin/post_images/edit.html.erb +17 -0
- data/app/views/blog/admin/post_images/index.html.erb +40 -0
- data/app/views/blog/admin/post_images/new.html.erb +19 -0
- data/app/views/blog/admin/post_products/_form.html.erb +8 -0
- data/app/views/blog/admin/post_products/_related_products_table.html.erb +18 -0
- data/app/views/blog/admin/post_products/edit.html.erb +18 -0
- data/app/views/blog/admin/post_products/index.html.erb +50 -0
- data/app/views/blog/admin/post_products/new.html.erb +21 -0
- data/app/views/blog/admin/posts/_form.html.erb +40 -0
- data/app/views/blog/admin/posts/edit.html.erb +12 -0
- data/app/views/blog/admin/posts/index.html.erb +54 -0
- data/app/views/blog/admin/posts/new.html.erb +14 -0
- data/app/views/blog/admin/posts/show.html.erb +17 -0
- data/app/views/blog/admin/shared/_post_tabs.html.erb +26 -0
- data/app/views/blog/post_categories/show.html.erb +12 -0
- data/app/views/blog/posts/archive.html.erb +13 -0
- data/app/views/blog/posts/index.html.erb +16 -0
- data/app/views/blog/posts/index.rss.builder +17 -0
- data/app/views/blog/posts/show.html.erb +37 -0
- data/app/views/blog/shared/_archive.html.erb +31 -0
- data/app/views/blog/shared/_disqus_comments.html.erb +20 -0
- data/app/views/blog/shared/_preview.html.erb +18 -0
- data/app/views/blog/shared/_sidebar.html.erb +26 -0
- data/config/locales/en.yml +77 -0
- data/config/routes.rb +38 -0
- data/lib/generators/spree_essentials/blog_generator.rb +20 -0
- data/lib/generators/templates/db/migrate/acts_as_taggable_on_posts.rb +32 -0
- data/lib/generators/templates/db/migrate/create_post_categories.rb +13 -0
- data/lib/generators/templates/db/migrate/create_post_categories_posts.rb +12 -0
- data/lib/generators/templates/db/migrate/create_post_products.rb +13 -0
- data/lib/generators/templates/db/migrate/create_posts.rb +18 -0
- data/lib/spree_essential_blog/version.rb +3 -0
- data/lib/spree_essential_blog.rb +34 -0
- data/lib/tasks/sample/sailing.jpg +0 -0
- data/lib/tasks/sample/sailing2.jpg +0 -0
- data/lib/tasks/sample/sailing3.jpg +0 -0
- data/lib/tasks/sample.rake +41 -0
- data/public/stylesheets/posts.css +65 -0
- data/spree_essential_blog.gemspec +32 -0
- data/test/dummy_hooks/after_migrate.rb.sample +1 -0
- data/test/dummy_hooks/before_migrate.rb +13 -0
- data/test/dummy_hooks/templates/admin/all.css +3 -0
- data/test/dummy_hooks/templates/admin/all.js +1 -0
- data/test/dummy_hooks/templates/store/all.css +3 -0
- data/test/dummy_hooks/templates/store/all.js +1 -0
- data/test/integration/admin/disqus_integration_test.rb +25 -0
- data/test/integration/admin/post_category_integration_test.rb +131 -0
- data/test/integration/admin/post_integration_test.rb +80 -0
- data/test/integration/post_category_integration_test.rb +43 -0
- data/test/integration/post_integration_test.rb +240 -0
- data/test/support/factories.rb +15 -0
- data/test/test_helper.rb +7 -0
- data/test/unit/post_category_test.rb +24 -0
- data/test/unit/post_test.rb +33 -0
- metadata +236 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
class Admin::PostIntegrationTest < ActiveSupport::IntegrationCase
|
7
|
+
|
8
|
+
setup do
|
9
|
+
Post.destroy_all
|
10
|
+
@labels = %(Title, Posted At, Body, Tags).split(', ')
|
11
|
+
@values = %(Just a post, #{Time.now}, #{Faker::Lorem.paragraphs(1 + rand(4)).join("\n\n")}, one tag).split(', ')
|
12
|
+
end
|
13
|
+
|
14
|
+
should "have a link to new post" do
|
15
|
+
visit admin_posts_path
|
16
|
+
btn = find(".actions a.button").native
|
17
|
+
assert_match /#{new_admin_post_path}$/, btn.attribute('href')
|
18
|
+
assert_equal "New Post", btn.text
|
19
|
+
end
|
20
|
+
|
21
|
+
should "get new post" do
|
22
|
+
visit new_admin_post_path
|
23
|
+
assert has_content?("New Post")
|
24
|
+
within "#new_post" do
|
25
|
+
@labels.each do |f|
|
26
|
+
assert has_field?(f)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
should "validate post" do
|
32
|
+
visit new_admin_post_path
|
33
|
+
click_button "Create"
|
34
|
+
within "#errorExplanation" do
|
35
|
+
assert_seen "3 errors prohibited this record from being saved:"
|
36
|
+
assert_seen "Title can't be blank"
|
37
|
+
assert_seen "Body can't be blank"
|
38
|
+
assert_seen "Posted at is an invalid date."
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
should "create a post" do
|
43
|
+
visit new_admin_post_path
|
44
|
+
within "#new_post" do
|
45
|
+
@labels.each_with_index do |label, index|
|
46
|
+
fill_in label, :with => @values[index]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
click_button "Create"
|
50
|
+
assert_flash :notice, %(Post "Just a post" has been successfully created!)
|
51
|
+
end
|
52
|
+
|
53
|
+
context "an existing post" do
|
54
|
+
setup do
|
55
|
+
@post = Factory.create(:post)
|
56
|
+
end
|
57
|
+
|
58
|
+
should "edit and update" do
|
59
|
+
visit edit_admin_post_path(@post)
|
60
|
+
|
61
|
+
within "#edit_post_#{@post.id}" do
|
62
|
+
@labels.each_with_index do |label, index|
|
63
|
+
next if label == 'Posted At'
|
64
|
+
fill_in label, :with => @values[index].reverse
|
65
|
+
end
|
66
|
+
end
|
67
|
+
click_button "Update"
|
68
|
+
assert_equal admin_post_path(@post.reload), current_path
|
69
|
+
assert_flash :notice, %(Post "tsop a tsuJ" has been successfully updated!)
|
70
|
+
end
|
71
|
+
|
72
|
+
should "get destroyed" do
|
73
|
+
visit admin_posts_path
|
74
|
+
find("a[href='#']").click
|
75
|
+
assert find_by_id("popup_ok").click
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
class Blog::PostCategoryIntegrationTest < ActiveSupport::IntegrationCase
|
7
|
+
|
8
|
+
include Blog::PostsHelper
|
9
|
+
|
10
|
+
def setup
|
11
|
+
Post.destroy_all
|
12
|
+
PostCategory.destroy_all
|
13
|
+
@categories = %w(Jellies Peanuts Butters).map{ |i| Factory.create(:post_category, :name => i) }
|
14
|
+
3.times{|i|
|
15
|
+
post = Factory.create(:post, :title => "Capy post #{i}", :posted_at => Time.now - i.days)
|
16
|
+
post.categories = [@categories.slice(i)]
|
17
|
+
post.save
|
18
|
+
}
|
19
|
+
@posts = Post.order(:id).all
|
20
|
+
end
|
21
|
+
|
22
|
+
should "get the blog page" do
|
23
|
+
visit posts_path
|
24
|
+
within ".post-sidebar .post-categories" do
|
25
|
+
assert_seen "Categories"
|
26
|
+
@categories.each do |i|
|
27
|
+
assert has_link?(i.name, :href => post_category_path(i))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
should "only have the first post in the first category" do
|
33
|
+
@post = @posts.shift
|
34
|
+
visit post_category_path(@categories.first)
|
35
|
+
assert_seen @post.title, :within => ".post-title h2"
|
36
|
+
within "#content .posts" do
|
37
|
+
@posts.each do |i|
|
38
|
+
assert !has_content?(i.title)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,240 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
|
7
|
+
class Blog::PostIntegrationTest < ActiveSupport::IntegrationCase
|
8
|
+
|
9
|
+
|
10
|
+
include Blog::PostsHelper
|
11
|
+
|
12
|
+
def setup
|
13
|
+
Post.destroy_all
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def assert_no_post(post)
|
18
|
+
within "#sidebar .post-archive" do
|
19
|
+
assert !has_link?(post.title)
|
20
|
+
end
|
21
|
+
within "#content .posts" do
|
22
|
+
assert !has_link?(post.title)
|
23
|
+
end
|
24
|
+
within ".tag-cloud ul.tags" do
|
25
|
+
post.tags.each do |tag|
|
26
|
+
assert !has_link?(tag.name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def assert_has_post(post)
|
32
|
+
within "#sidebar .post-archive" do
|
33
|
+
assert has_link?(post.title)
|
34
|
+
end
|
35
|
+
within "#content .posts" do
|
36
|
+
assert has_link?(post.title)
|
37
|
+
end
|
38
|
+
within ".tag-cloud ul.tags" do
|
39
|
+
post.tags.each do |tag|
|
40
|
+
assert has_link?(tag.name)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
context "with some posts" do
|
48
|
+
|
49
|
+
setup do
|
50
|
+
11.times{ |i| Factory.create(:post, :title => "Capy post #{i}", :posted_at => Time.now - i.days) }
|
51
|
+
assert_equal 11, Post.count
|
52
|
+
end
|
53
|
+
|
54
|
+
should "get the blog page" do
|
55
|
+
visit posts_path
|
56
|
+
# first post
|
57
|
+
assert has_link?("Capy post 1")
|
58
|
+
# last post
|
59
|
+
assert has_link?("Capy post 9")
|
60
|
+
# archive link
|
61
|
+
assert has_link?("View Full Archive")
|
62
|
+
# tag link
|
63
|
+
assert has_link?("peanut butter")
|
64
|
+
# page two
|
65
|
+
assert has_link?("2")
|
66
|
+
assert has_link?("Next ›")
|
67
|
+
end
|
68
|
+
|
69
|
+
should "get a blog post" do
|
70
|
+
@post = Post.first
|
71
|
+
visit full_post_path(@post.year, @post.month, @post.day, @post)
|
72
|
+
within('h1') do
|
73
|
+
assert has_content?(@post.title)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
should "get the archive" do
|
78
|
+
visit archive_posts_path
|
79
|
+
assert has_link?("Capy post 1")
|
80
|
+
assert has_link?("Shop the Store")
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
context "with a specific post" do
|
87
|
+
|
88
|
+
setup do
|
89
|
+
@post = Factory.create(:post, :posted_at => DateTime.parse("2011/2/17"), :tag_list => "gruyere, emmentaler, fondue")
|
90
|
+
assert_equal 1, Post.count
|
91
|
+
end
|
92
|
+
|
93
|
+
should "find by seo path" do
|
94
|
+
visit post_seo_path(@post)
|
95
|
+
assert_seen "Peanut Butter Jelly Time", :within => ".post-title h1"
|
96
|
+
assert_seen "Thursday February 17, 2011", :within => ".post-title h5"
|
97
|
+
within ".post-tags" do
|
98
|
+
assert has_link?("gruyere")
|
99
|
+
assert has_link?("emmentaler")
|
100
|
+
assert has_link?("fondue")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
should "not find by tags" do
|
105
|
+
visit search_posts_path(:query => "some crazy random query")
|
106
|
+
assert_seen "No posts found!", :within => ".posts h1"
|
107
|
+
end
|
108
|
+
|
109
|
+
should "find by tags" do
|
110
|
+
visit search_posts_path(:query => "emmentaler")
|
111
|
+
assert has_link?("Peanut Butter Jelly Time", :href => post_seo_path(@post))
|
112
|
+
assert has_link?("Read More", :href => post_seo_path(@post))
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
context "unpublished posts" do
|
119
|
+
|
120
|
+
setup do
|
121
|
+
@tags = %(totally, not published).split(", ")
|
122
|
+
@post = Factory.create(:post, :title => "Unpublished Post", :tag_list => @tags.join(", "), :live => false)
|
123
|
+
assert_equal 1, Post.count
|
124
|
+
end
|
125
|
+
|
126
|
+
should "not include post in index" do
|
127
|
+
visit posts_path
|
128
|
+
assert_no_post(@post)
|
129
|
+
end
|
130
|
+
|
131
|
+
should "not include post in day specific index" do
|
132
|
+
visit post_date_path(:year => @post.year, :month => @post.month, :day => @post.day)
|
133
|
+
assert_no_post(@post)
|
134
|
+
end
|
135
|
+
|
136
|
+
should "not include post in month specific index" do
|
137
|
+
visit post_date_path(:year => @post.year, :month => @post.month)
|
138
|
+
assert_no_post(@post)
|
139
|
+
end
|
140
|
+
|
141
|
+
should "not include post in year specific index" do
|
142
|
+
visit post_date_path(:year => @post.year)
|
143
|
+
assert_no_post(@post)
|
144
|
+
end
|
145
|
+
|
146
|
+
should "not include post in search results" do
|
147
|
+
@tags.each do |tag|
|
148
|
+
visit search_posts_path(tag)
|
149
|
+
assert_no_post(@post)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
context "published posts" do
|
157
|
+
|
158
|
+
setup do
|
159
|
+
@tags = %(totally, published).split(", ")
|
160
|
+
@post = Factory.create(:post, :title => "Published Post", :tag_list => @tags.join(", "), :live => true)
|
161
|
+
assert_equal 1, Post.count
|
162
|
+
end
|
163
|
+
|
164
|
+
should "not include post in index" do
|
165
|
+
visit posts_path
|
166
|
+
assert_has_post(@post)
|
167
|
+
end
|
168
|
+
|
169
|
+
should "not include post in day specific index" do
|
170
|
+
visit post_date_path(:year => @post.year, :month => @post.month, :day => @post.day)
|
171
|
+
assert_has_post(@post)
|
172
|
+
end
|
173
|
+
|
174
|
+
should "not include post in month specific index" do
|
175
|
+
visit post_date_path(:year => @post.year, :month => @post.month)
|
176
|
+
assert_has_post(@post)
|
177
|
+
end
|
178
|
+
|
179
|
+
should "not include post in year specific index" do
|
180
|
+
visit post_date_path(:year => @post.year)
|
181
|
+
assert_has_post(@post)
|
182
|
+
end
|
183
|
+
|
184
|
+
should "not include post in search results" do
|
185
|
+
@tags.each do |tag|
|
186
|
+
visit search_posts_path(tag)
|
187
|
+
assert_has_post(@post)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
# [todo] make these capy tests
|
199
|
+
#
|
200
|
+
#context "published, dated posts" do
|
201
|
+
#
|
202
|
+
# setup do
|
203
|
+
# @date = DateTime.parse("2011/3/20 16:00")
|
204
|
+
# @post = Factory.create(:post, :posted_at => @date)
|
205
|
+
# 10.times {|i| Factory.create(:post, :title => "Today's Sample Post #{i}", :posted_at => @date) }
|
206
|
+
# 10.times {|i| Factory.create(:post, :title => "Last Weeks's Sample Post #{i}", :posted_at => @date - 1.week) }
|
207
|
+
# 10.times {|i| Factory.create(:post, :title => "Last Month's Sample Post #{i}", :posted_at => @date - 1.month) }
|
208
|
+
# 10.times {|i| Factory.create(:post, :title => "Last Years's Sample Post #{i}", :posted_at => @date - 1.year) }
|
209
|
+
# end
|
210
|
+
#
|
211
|
+
# should "assert proper post count" do
|
212
|
+
# assert_equal 41, Post.count
|
213
|
+
# end
|
214
|
+
#
|
215
|
+
# should "paginate posts by day" do
|
216
|
+
# get :index, :year => @post.year, :month => @post.month, :day => @post.day
|
217
|
+
# assert_equal 10, assigns(:posts).length
|
218
|
+
# assert_equal 11, assigns(:posts).total_entries
|
219
|
+
# assert_equal 2, assigns(:posts).total_pages
|
220
|
+
# assert_response :success
|
221
|
+
# end
|
222
|
+
#
|
223
|
+
# should "get posts by month" do
|
224
|
+
# get :index, :year => @post.year, :month => @post.month
|
225
|
+
# assert_equal 10, assigns(:posts).length
|
226
|
+
# assert_equal 21, assigns(:posts).total_entries
|
227
|
+
# assert_equal 3, assigns(:posts).total_pages
|
228
|
+
# assert_response :success
|
229
|
+
# end
|
230
|
+
#
|
231
|
+
# should "get posts by year" do
|
232
|
+
# get :index, :year => @post.year
|
233
|
+
# assert_not_nil assigns(:posts)
|
234
|
+
# assert_equal 10, assigns(:posts).length
|
235
|
+
# assert_equal 31, assigns(:posts).total_entries
|
236
|
+
# assert_equal 4, assigns(:posts).total_pages
|
237
|
+
# assert_response :success
|
238
|
+
# end
|
239
|
+
#
|
240
|
+
#end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
|
3
|
+
factory :post do
|
4
|
+
title "Peanut Butter Jelly Time"
|
5
|
+
posted_at { Time.now + rand(10000) }
|
6
|
+
body "Vivamus rutrum nunc non neque consectetur quis placerat neque lobortis. Nam vestibulum, arcu sodales feugiat consectetur, nisl orci bibendum elit, eu euismod magna sapien ut nibh. Donec semper quam scelerisque tortor dictum gravida. In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit. Proin metus odio, aliquam eget molestie nec, gravida ut sapien. Phasellus quis est sed turpis sollicitudin venenatis sed eu odio. Praesent eget neque eu eros interdum malesuada non vel leo. Sed fringilla porta ligula egestas tincidunt. Nullam risus magna, ornare vitae varius eget, scelerisque a libero."
|
7
|
+
tag_list "peanut butter, jelly, sandwich, lunch"
|
8
|
+
live true
|
9
|
+
end
|
10
|
+
|
11
|
+
factory :post_category do
|
12
|
+
name "Jellies"
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PostCategoryTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
PostCategory.destroy_all
|
7
|
+
end
|
8
|
+
|
9
|
+
subject { PostCategory.new }
|
10
|
+
|
11
|
+
should validate_presence_of(:name)
|
12
|
+
|
13
|
+
should "automatically set path" do
|
14
|
+
@category = Factory.create(:post_category, :name => "This should parameterize")
|
15
|
+
assert_equal "this-should-parameterize", @category.permalink
|
16
|
+
end
|
17
|
+
|
18
|
+
should "not duplicate path" do
|
19
|
+
@category1 = Factory.create(:post_category)
|
20
|
+
@category2 = Factory.create(:post_category)
|
21
|
+
assert @category1.permalink != @category2.permalink
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PostTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
Post.destroy_all
|
7
|
+
end
|
8
|
+
|
9
|
+
subject { Post.new }
|
10
|
+
|
11
|
+
should validate_presence_of(:title)
|
12
|
+
should validate_presence_of(:body)
|
13
|
+
|
14
|
+
should "automatically set path" do
|
15
|
+
@post = Factory.create(:post, :title => "This should parameterize")
|
16
|
+
assert_equal "this-should-parameterize", @post.path
|
17
|
+
end
|
18
|
+
|
19
|
+
should "validate date time" do
|
20
|
+
@post = Factory.build(:post)
|
21
|
+
@post.posted_at = "testing"
|
22
|
+
assert !@post.valid?
|
23
|
+
end
|
24
|
+
|
25
|
+
should "parse date time" do
|
26
|
+
date = DateTime.parse("2011/4/1 16:15")
|
27
|
+
@post = Factory.build(:post)
|
28
|
+
@post.posted_at = "april 1 2011 - 4:15 pm"
|
29
|
+
assert @post.valid?
|
30
|
+
assert_equal date, @post.posted_at
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,236 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spree_essential_blog
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.rc1
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Spencer Steffen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: spree_essentials
|
16
|
+
requirement: &70245698437120 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.3.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70245698437120
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: acts-as-taggable-on
|
27
|
+
requirement: &70245698435560 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.2.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70245698435560
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: shoulda
|
38
|
+
requirement: &70245698434360 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 3.0.0.beta2
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70245698434360
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: dummier
|
49
|
+
requirement: &70245698433260 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.4
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70245698433260
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: factory_girl
|
60
|
+
requirement: &70245698432520 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.3.2
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70245698432520
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: capybara
|
71
|
+
requirement: &70245698431640 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.1.2
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70245698431640
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: selenium-webdriver
|
82
|
+
requirement: &70245698431120 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 2.15.0
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70245698431120
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: sqlite3
|
93
|
+
requirement: &70245698430460 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.3.5
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70245698430460
|
102
|
+
description: Spree Essential Blog is a blog plugin for Spree sites equipped with spree_essentials.
|
103
|
+
email:
|
104
|
+
- spencer@citrusme.com
|
105
|
+
executables: []
|
106
|
+
extensions: []
|
107
|
+
extra_rdoc_files: []
|
108
|
+
files:
|
109
|
+
- .gitignore
|
110
|
+
- .travis.yml
|
111
|
+
- Gemfile
|
112
|
+
- LICENSE
|
113
|
+
- README.md
|
114
|
+
- Rakefile
|
115
|
+
- Versionfile
|
116
|
+
- app/controllers/blog/admin/disqus_settings_controller.rb
|
117
|
+
- app/controllers/blog/admin/post_categories_controller.rb
|
118
|
+
- app/controllers/blog/admin/post_images_controller.rb
|
119
|
+
- app/controllers/blog/admin/post_products_controller.rb
|
120
|
+
- app/controllers/blog/admin/posts_controller.rb
|
121
|
+
- app/controllers/blog/post_categories_controller.rb
|
122
|
+
- app/controllers/blog/posts_controller.rb
|
123
|
+
- app/controllers/pages_controller_decorator.rb
|
124
|
+
- app/helpers/blog/posts_helper.rb
|
125
|
+
- app/models/blog_configuration.rb
|
126
|
+
- app/models/post.rb
|
127
|
+
- app/models/post_category.rb
|
128
|
+
- app/models/post_image.rb
|
129
|
+
- app/models/post_product.rb
|
130
|
+
- app/overrides/spree_essential_blog.rb
|
131
|
+
- app/validators/datetime_validator.rb
|
132
|
+
- app/views/blog/admin/configurations/_disqus_config.html.erb
|
133
|
+
- app/views/blog/admin/disqus_settings/edit.html.erb
|
134
|
+
- app/views/blog/admin/disqus_settings/show.html.erb
|
135
|
+
- app/views/blog/admin/post_categories/_form.html.erb
|
136
|
+
- app/views/blog/admin/post_categories/edit.html.erb
|
137
|
+
- app/views/blog/admin/post_categories/index.html.erb
|
138
|
+
- app/views/blog/admin/post_categories/new.html.erb
|
139
|
+
- app/views/blog/admin/post_images/_form.html.erb
|
140
|
+
- app/views/blog/admin/post_images/edit.html.erb
|
141
|
+
- app/views/blog/admin/post_images/index.html.erb
|
142
|
+
- app/views/blog/admin/post_images/new.html.erb
|
143
|
+
- app/views/blog/admin/post_products/_form.html.erb
|
144
|
+
- app/views/blog/admin/post_products/_related_products_table.html.erb
|
145
|
+
- app/views/blog/admin/post_products/edit.html.erb
|
146
|
+
- app/views/blog/admin/post_products/index.html.erb
|
147
|
+
- app/views/blog/admin/post_products/new.html.erb
|
148
|
+
- app/views/blog/admin/posts/_form.html.erb
|
149
|
+
- app/views/blog/admin/posts/edit.html.erb
|
150
|
+
- app/views/blog/admin/posts/index.html.erb
|
151
|
+
- app/views/blog/admin/posts/new.html.erb
|
152
|
+
- app/views/blog/admin/posts/show.html.erb
|
153
|
+
- app/views/blog/admin/shared/_post_tabs.html.erb
|
154
|
+
- app/views/blog/post_categories/show.html.erb
|
155
|
+
- app/views/blog/posts/archive.html.erb
|
156
|
+
- app/views/blog/posts/index.html.erb
|
157
|
+
- app/views/blog/posts/index.rss.builder
|
158
|
+
- app/views/blog/posts/show.html.erb
|
159
|
+
- app/views/blog/shared/_archive.html.erb
|
160
|
+
- app/views/blog/shared/_disqus_comments.html.erb
|
161
|
+
- app/views/blog/shared/_preview.html.erb
|
162
|
+
- app/views/blog/shared/_sidebar.html.erb
|
163
|
+
- config/locales/en.yml
|
164
|
+
- config/routes.rb
|
165
|
+
- lib/generators/spree_essentials/blog_generator.rb
|
166
|
+
- lib/generators/templates/db/migrate/acts_as_taggable_on_posts.rb
|
167
|
+
- lib/generators/templates/db/migrate/create_post_categories.rb
|
168
|
+
- lib/generators/templates/db/migrate/create_post_categories_posts.rb
|
169
|
+
- lib/generators/templates/db/migrate/create_post_products.rb
|
170
|
+
- lib/generators/templates/db/migrate/create_posts.rb
|
171
|
+
- lib/spree_essential_blog.rb
|
172
|
+
- lib/spree_essential_blog/version.rb
|
173
|
+
- lib/tasks/sample.rake
|
174
|
+
- lib/tasks/sample/sailing.jpg
|
175
|
+
- lib/tasks/sample/sailing2.jpg
|
176
|
+
- lib/tasks/sample/sailing3.jpg
|
177
|
+
- public/stylesheets/posts.css
|
178
|
+
- spree_essential_blog.gemspec
|
179
|
+
- test/dummy_hooks/after_migrate.rb.sample
|
180
|
+
- test/dummy_hooks/before_migrate.rb
|
181
|
+
- test/dummy_hooks/templates/admin/all.css
|
182
|
+
- test/dummy_hooks/templates/admin/all.js
|
183
|
+
- test/dummy_hooks/templates/store/all.css
|
184
|
+
- test/dummy_hooks/templates/store/all.js
|
185
|
+
- test/integration/admin/disqus_integration_test.rb
|
186
|
+
- test/integration/admin/post_category_integration_test.rb
|
187
|
+
- test/integration/admin/post_integration_test.rb
|
188
|
+
- test/integration/post_category_integration_test.rb
|
189
|
+
- test/integration/post_integration_test.rb
|
190
|
+
- test/support/factories.rb
|
191
|
+
- test/test_helper.rb
|
192
|
+
- test/unit/post_category_test.rb
|
193
|
+
- test/unit/post_test.rb
|
194
|
+
homepage: https://github.com/citrus/spree_essential_blog
|
195
|
+
licenses: []
|
196
|
+
post_install_message:
|
197
|
+
rdoc_options: []
|
198
|
+
require_paths:
|
199
|
+
- lib
|
200
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
segments:
|
207
|
+
- 0
|
208
|
+
hash: -1719567594483908705
|
209
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
211
|
+
requirements:
|
212
|
+
- - ! '>'
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 1.3.1
|
215
|
+
requirements: []
|
216
|
+
rubyforge_project:
|
217
|
+
rubygems_version: 1.8.10
|
218
|
+
signing_key:
|
219
|
+
specification_version: 3
|
220
|
+
summary: Spree Essential Blog is a blog plugin for Spree sites equipped with spree_essentials.
|
221
|
+
test_files:
|
222
|
+
- test/dummy_hooks/after_migrate.rb.sample
|
223
|
+
- test/dummy_hooks/before_migrate.rb
|
224
|
+
- test/dummy_hooks/templates/admin/all.css
|
225
|
+
- test/dummy_hooks/templates/admin/all.js
|
226
|
+
- test/dummy_hooks/templates/store/all.css
|
227
|
+
- test/dummy_hooks/templates/store/all.js
|
228
|
+
- test/integration/admin/disqus_integration_test.rb
|
229
|
+
- test/integration/admin/post_category_integration_test.rb
|
230
|
+
- test/integration/admin/post_integration_test.rb
|
231
|
+
- test/integration/post_category_integration_test.rb
|
232
|
+
- test/integration/post_integration_test.rb
|
233
|
+
- test/support/factories.rb
|
234
|
+
- test/test_helper.rb
|
235
|
+
- test/unit/post_category_test.rb
|
236
|
+
- test/unit/post_test.rb
|