diff options
author | Pete Higgins <pete@peterhiggins.org> | 2012-02-10 00:28:29 -0800 |
---|---|---|
committer | Pete Higgins <pete@peterhiggins.org> | 2012-02-10 01:05:51 -0800 |
commit | 80187eac7d35a9a5ac67019a317e678c4445e44e (patch) | |
tree | 32627b15dd6f95edc468b5579a27e4bd246e669c /spec | |
parent | 1af631b501bbd8457d114805f729e8af59edeeee (diff) | |
download | refinerycms-blog-80187eac7d35a9a5ac67019a317e678c4445e44e.tar.gz refinerycms-blog-80187eac7d35a9a5ac67019a317e678c4445e44e.tar.bz2 refinerycms-blog-80187eac7d35a9a5ac67019a317e678c4445e44e.zip |
Refactor blog archive widget.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/helpers/refinery/blog/posts_helper_spec.rb | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/spec/helpers/refinery/blog/posts_helper_spec.rb b/spec/helpers/refinery/blog/posts_helper_spec.rb new file mode 100644 index 0000000..8d74b57 --- /dev/null +++ b/spec/helpers/refinery/blog/posts_helper_spec.rb @@ -0,0 +1,71 @@ +require 'spec_helper' + +module Refinery + module Blog + describe PostsHelper do + describe "#blog_archive_widget" do + let(:html) { helper.blog_archive_widget(dates) } + let(:links) { Capybara.string(html).find("#blog_archive_widget ul") } + + context "without no archive dates" do + let(:dates) { [] } + + it "does not display anything" do + html.should be_blank + end + end + + context "with archive dates" do + let(:recent_post) { 2.months.ago } + let(:old_post) { 4.years.ago } + + let(:dates) do + [old_post, recent_post].map do |date| + [date, date.beginning_of_month, date.end_of_month] + end.flatten + end + + it "has a link for the month of dates not older than one year" do + month = Date::MONTHNAMES[recent_post.month] + year = recent_post.year + + links.should have_link("#{month} #{year} (3)") + end + + it "has a link for the year of dates older than one year" do + year = old_post.year + + links.should have_link("#{year} (3)") + end + + it "sorts recent links before old links" do + links.find("li:first").should have_content(recent_post.year.to_s) + links.find("li:last").should have_content(old_post.year.to_s) + end + end + + context "with multiple recent dates" do + let(:dates) { [3.months.ago, 2.months.ago] } + + it "sorts by the more recent date" do + first, second = dates.map {|p| Date::MONTHNAMES[p.month] } + + links.find("li:first").should have_content(second) + links.find("li:last").should have_content(first) + end + end + + context "with multiple old dates" do + let(:dates) { [5.years.ago, 4.years.ago] } + + it "sorts by the more recent date" do + first, second = dates.map {|p| p.year.to_s } + + links.find("li:first").should have_content(second) + links.find("li:last").should have_content(first) + end + end + end + end + end +end |