Skip to content

Commit

Permalink
Make it so on Ruby 1.9
Browse files Browse the repository at this point in the history
We have to do a few things here. First, encoding pragmas. Second, we move to minitest from test-spec which went belly-up when it has acquired bacon-its-evil-twin. Third, we introduce Bundler into the mix and let the updated Jeweler use it. The whole shebang should still work on 1.8.7 which we cannot guarantee yet due to a botched sqlite3 dependency, but this is something we are going to fix very soon. Tests green on 1.9.3-p0 with Rails 3.1
  • Loading branch information
julik committed Jan 20, 2012
1 parent 05f1a7f commit 400a469
Show file tree
Hide file tree
Showing 10 changed files with 135 additions and 83 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -3,3 +3,4 @@
coverage
rdoc
pkg
Gemfile.lock
10 changes: 10 additions & 0 deletions Gemfile
@@ -0,0 +1,10 @@
source "http://rubygems.org"

group :development do
gem "minitest", :require => %w( minitest/spec minitest/autorun )
gem "mocha"
gem 'sqlite3'
gem "rails", "3.1", :require => %w( active_support active_record action_view )
gem "jeweler"
gem "rake"
end
3 changes: 3 additions & 0 deletions Rakefile
Expand Up @@ -14,6 +14,9 @@ begin
rescue LoadError
end

# jewelry_portfolio is not currently available as a gem proper
# and has odd dependencies. Probably back from when github has been publishing gems.
# Could not find gem 'schacon-git', required by 'jewelry_portfolio', in any of the sources
begin
require 'jewelry_portfolio/tasks'
JewelryPortfolio::Tasks.new do |p|
Expand Down
3 changes: 2 additions & 1 deletion init.rb
@@ -1,2 +1,3 @@
# -*- encoding : utf-8 -*-
require 'peiji_san'
require 'peiji_san/view_helper'
require 'peiji_san/view_helper'
3 changes: 2 additions & 1 deletion lib/peiji_san.rb
@@ -1,3 +1,4 @@
# -*- encoding : utf-8 -*-
# Peiji-San uses named scopes to create a thin pagination layer.
#
# class Member < ActiveRecord::Base
Expand Down Expand Up @@ -117,4 +118,4 @@ def page(page, entries_per_page=nil)

entries.limit(entries_per_page).offset((page - 1) * entries_per_page)
end
end
end
3 changes: 2 additions & 1 deletion lib/peiji_san/view_helper.rb
@@ -1,3 +1,4 @@
# -*- encoding : utf-8 -*-
module PeijiSan
# Optionally defines the peiji_san_options method in your helper to override
# the default options.
Expand Down Expand Up @@ -100,4 +101,4 @@ def peiji_san_option(key, options)
end
end
end
end
end
58 changes: 48 additions & 10 deletions peiji-san.gemspec
@@ -1,30 +1,68 @@
# Generated by jeweler
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
s.name = %q{peiji-san}
s.version = "0.1.1"
s.version = "1.0.0"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Eloy Duran"]
s.date = %q{2009-03-09}
s.date = %q{2012-01-20}
s.description = %q{PeijiSan is a Rails plugin which uses named scopes to create a thin pagination layer.}
s.email = %q{eloy.de.enige@gmail.com}
s.extra_rdoc_files = ["README.rdoc", "LICENSE"]
s.files = ["lib", "lib/peiji_san", "lib/peiji_san/view_helper.rb", "lib/peiji_san.rb", "LICENSE", "peiji-san.gemspec", "rails", "rails/init.rb", "Rakefile", "README.rdoc", "test", "test/peiji_san_test.rb", "test/test_helper.rb", "test/view_helper_test.rb", "VERSION.yml"]
s.has_rdoc = true
s.extra_rdoc_files = [
"LICENSE",
"README.rdoc",
"TODO"
]
s.files = [
"Gemfile",
"Gemfile.lock",
"LICENSE",
"README.rdoc",
"Rakefile",
"TODO",
"VERSION.yml",
"init.rb",
"lib/peiji_san.rb",
"lib/peiji_san/view_helper.rb",
"peiji-san.gemspec",
"test/peiji_san_test.rb",
"test/test_helper.rb",
"test/view_helper_test.rb"
]
s.homepage = %q{http://github.com/Fingertips/peiji-san}
s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
s.require_paths = ["lib"]
s.rubygems_version = %q{1.3.1}
s.rubygems_version = %q{1.6.2}
s.summary = %q{PeijiSan is a Rails plugin which uses named scopes to create a thin pagination layer.}

if s.respond_to? :specification_version then
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
s.specification_version = 2
s.specification_version = 3

if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_development_dependency(%q<minitest>, [">= 0"])
s.add_development_dependency(%q<mocha>, [">= 0"])
s.add_development_dependency(%q<sqlite3>, [">= 0"])
s.add_development_dependency(%q<rails>, ["= 3.1"])
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
s.add_development_dependency(%q<rake>, [">= 0"])
else
s.add_dependency(%q<minitest>, [">= 0"])
s.add_dependency(%q<mocha>, [">= 0"])
s.add_dependency(%q<sqlite3>, [">= 0"])
s.add_dependency(%q<rails>, ["= 3.1"])
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
s.add_dependency(%q<rake>, [">= 0"])
end
else
s.add_dependency(%q<minitest>, [">= 0"])
s.add_dependency(%q<mocha>, [">= 0"])
s.add_dependency(%q<sqlite3>, [">= 0"])
s.add_dependency(%q<rails>, ["= 3.1"])
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
s.add_dependency(%q<rake>, [">= 0"])
end
end

69 changes: 35 additions & 34 deletions test/peiji_san_test.rb
@@ -1,17 +1,18 @@
# -*- encoding : utf-8 -*-
require File.expand_path('../test_helper', __FILE__)

describe "A model extended by PeijiSan" do
it "should define an #entries_per_page= class method with which the max amount of entries per page is specified" do
Member.should.respond_to :entries_per_page=
Member.instance_variable_get(:@entries_per_page).should.be 10
Member.must_respond_to :entries_per_page=
Member.instance_variable_get(:@entries_per_page).must_equal 10
end

it "should define an #entries_per_page reader method" do
Member.entries_per_page.should == 10
Member.entries_per_page.must_equal 10
end

it "should have defined a #page class method and added it to the class's scopes" do
Member.should.respond_to :page
Member.must_respond_to :page
end
end

Expand All @@ -27,38 +28,38 @@

it "returns entries for the specified page" do
page_1 = Member.page(1)
page_1.length.should.be 10
page_1.should == Member.find(:all, :offset => 0, :limit => 10)
page_1.length.must_equal 10
page_1.must_equal Member.find(:all, :offset => 0, :limit => 10)
end

it "returns the correct count of pages" do
Member.all_like_krs_1.page(1).page_count.should.be 11
Member.all_like_krs_1.page(1).page_count.must_equal 11
end

it "knows the current page number" do
Member.page(2).current_page.should.be 2
Member.page(4).current_page.should.be 4
Member.page(2).current_page.must_equal 2
Member.page(4).current_page.must_equal 4
end

it "knows if there's a next page" do
Member.page(1).should.next_page
Member.page(20).should.not.next_page
Member.all_like_krs_1.but_ending_with_9.page(1).should.not.next_page
Member.page(1).next_page.wont_be_nil
Member.page(20).next_page.must_be_nil
Member.all_like_krs_1.but_ending_with_9.page(1).next_page.must_be_nil
end

it "returns the next page number" do
Member.page(1).next_page.should.be 2
Member.page(20).next_page.should.be nil
Member.page(1).next_page.must_equal 2
Member.page(20).next_page.must_be_nil
end

it "knows if there's a previous page" do
Member.page(1).should.not.previous_page
Member.page(20).should.previous_page
Member.page(1).previous_page.must_be_nil
Member.page(20).previous_page.wont_be_nil
end

it "returns the previous page" do
Member.page(1).previous_page.should.be nil
Member.page(20).previous_page.should.be 19
Member.page(1).previous_page.must_equal nil
Member.page(20).previous_page.must_equal 19
end

it "knows if a given page number is the current page" do
Expand All @@ -67,30 +68,30 @@
end

it "defaults to page 1 if no valid page argument was given" do
Member.page(nil).current_page.should.be 1
Member.page('').current_page.should.be 1
Member.page(nil).current_page.must_equal 1
Member.page('').current_page.must_equal 1
end

it "casts the page argument to an integer" do
Member.page('2').current_page.should.be 2
Member.page('2').current_page.must_equal 2
end

it "takes an optional second argument which overrides the entries_per_page setting" do
Member.all_like_krs_1.page(1, 20).page_count.should.be 6
Member.all_like_krs_1.page(1, 20).page_count.must_equal 6
end

it "returns the count of all the entries across all pages for the current scope" do
Member.all_like_krs_1.page(1).unpaged_count.should.be 110
Member.all_like_krs_1.page(2).unpaged_count.should.be 110
Member.all_like_krs_1.but_ending_with_9.page(1).unpaged_count.should.be 10
Member.all_like_krs_1.page(1).unpaged_count.must_equal 110
Member.all_like_krs_1.page(2).unpaged_count.must_equal 110
Member.all_like_krs_1.but_ending_with_9.page(1).unpaged_count.must_equal 10
end

it "works when chained with other regular named scopes" do
Member.all_like_krs_1.page(1).page_count.should.be 11
Member.all_like_krs_1.but_ending_with_9.page(2).page_count.should.be 1
Member.all_like_krs_1.page(1).page_count.must_equal 11
Member.all_like_krs_1.but_ending_with_9.page(2).page_count.must_equal 1

Member.all_like_krs_1.page(2).should == Member.find(:all, :conditions => "name LIKE 'KRS 1%'", :offset => 10, :limit => 10)
Member.all_like_krs_1.but_ending_with_9.page(1).should == Member.find(:all, :conditions => "name LIKE 'KRS 1%' AND name LIKE '%9'", :offset => 0, :limit => 10)
Member.all_like_krs_1.page(2).must_equal Member.find(:all, :conditions => "name LIKE 'KRS 1%'", :offset => 10, :limit => 10)
Member.all_like_krs_1.but_ending_with_9.page(1).must_equal Member.find(:all, :conditions => "name LIKE 'KRS 1%' AND name LIKE '%9'", :offset => 0, :limit => 10)
end

it "should still work when chained through an association proxy" do
Expand All @@ -99,10 +100,10 @@
5.times { member.works.create(:status => 'new') }

page = member.reload.works.uploaded.page(1)
page.length.should.be 5
page.page_count.should.be 4
member.works.uploaded.page(4).length.should.be 1
page.length.must_equal 5
page.page_count.must_equal 4
member.works.uploaded.page(4).length.must_equal 1

member.works.page(1).page_count.should.be 5
member.works.page(1).page_count.must_equal 5
end
end
end
17 changes: 6 additions & 11 deletions test/test_helper.rb
@@ -1,17 +1,12 @@
# -*- encoding : utf-8 -*-
require "rubygems"
require "bundler"
Bundler.require(:development)

module PeijiSanTest
module Initializer
def self.load_dependencies
$:.unshift File.expand_path('../../lib', __FILE__)

require 'rubygems' rescue LoadError

require 'active_support'
require 'active_record'
require 'action_view'

require 'test/spec'
require 'mocha'

require File.expand_path('../../init', __FILE__)
end

Expand Down Expand Up @@ -65,4 +60,4 @@ class Work < ActiveRecord::Base
self.entries_per_page = 5

scope :uploaded, where(:status => 'uploaded')
end
end

0 comments on commit 400a469

Please sign in to comment.