Skip to content

Commit

Permalink
add Seinfeld::User#disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
technoweenie committed May 8, 2010
1 parent 285424a commit 6688363
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 8 deletions.
6 changes: 2 additions & 4 deletions Rakefile
Expand Up @@ -78,9 +78,7 @@ namespace :seinfeld do
desc "Update the calendar of USER"
task :update => :init do
if ENV['USER'].blank?
Seinfeld::User.paginated_each do |user|
user.update_progress
end
Rake::Task["cron"].invoke
else
user = Seinfeld::User.find_by_login(ENV['USER'])
if user
Expand All @@ -100,7 +98,7 @@ end

desc "cron task for keeping the CAN updated. Run once every hour."
task :cron => 'seinfeld:init' do
Seinfeld::User.paginated_each do |user|
Seinfeld::User.active.paginated_each do |user|
user.update_progress
end
end
Expand Down
9 changes: 9 additions & 0 deletions db/migrate/20100508161031_add_disabled_users.rb
@@ -0,0 +1,9 @@
class AddDisabledUsers < ActiveRecord::Migration
def self.up
add_column :seinfeld_users, :disabled, :boolean, :default => false
end

def self.down
remove_column :seinfeld_users, :disabled, :boolean
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Expand Up @@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 0) do
ActiveRecord::Schema.define(:version => 20100508161031) do

create_table "seinfeld_progressions", :force => true do |t|
t.date "created_at"
Expand All @@ -26,6 +26,7 @@
t.date "longest_streak_start"
t.date "longest_streak_end"
t.string "time_zone", :limit => 50
t.boolean "disabled", :default => false
end

add_index "seinfeld_users", ["current_streak"], :name => "index_seinfeld_users_current_streak"
Expand Down
3 changes: 2 additions & 1 deletion lib/seinfeld/user.rb
Expand Up @@ -2,6 +2,7 @@ class Seinfeld
class User < ActiveRecord::Base
has_many :progressions, :order => 'seinfeld_progressions.created_at', :dependent => :delete_all

scope :active, where(:disabled => false)
scope :best_current_streak, where('current_streak > 0').order('current_streak desc, login').limit(15)
scope :best_alltime_streak, where('longest_streak > 0').order('longest_streak desc, login').limit(15)

Expand All @@ -16,7 +17,7 @@ def self.paginated_each(limit = 30)
end

def self.first_page(limit = 30, since = 0)
users = all(:order => 'id', :limit => 30, :conditions => ['id > ?', since])
users = where('id > ?', since).order('id').limit(limit)
users.blank? ? nil : users
end

Expand Down
28 changes: 26 additions & 2 deletions test/user_test.rb
Expand Up @@ -2,8 +2,9 @@

class UserTest < ActiveSupport::TestCase
fixtures do
@newb = Seinfeld::User.create! :login => 'newb'
@user = Seinfeld::User.create! :login => 'user',
@disabled = Seinfeld::User.create! :login => 'disabled', :disabled => true
@newb = Seinfeld::User.create! :login => 'newb'
@user = Seinfeld::User.create! :login => 'user',
:streak_start => Date.civil(2007, 12, 30), :streak_end => Date.civil(2007, 12, 31), :current_streak => 2,
:longest_streak_start => Date.civil(2007, 12, 30), :longest_streak_end => Date.civil(2007, 12, 31), :longest_streak => 2
@user.progressions.create!(:created_at => Date.civil(2007, 12, 30))
Expand All @@ -12,6 +13,29 @@ class UserTest < ActiveSupport::TestCase
@today = Date.civil(2008, 1, 3)
end

test "#first_page finds the first page of all users" do
assert_equal [@disabled, @newb], Seinfeld::User.first_page(2)
assert_equal [@user], Seinfeld::User.first_page(2, @newb.id)
assert_nil Seinfeld::User.first_page(2, @user.id)
end

test "#first_page finds the first page of active users" do
assert_equal [@newb, @user], Seinfeld::User.active.first_page(2)
assert_nil Seinfeld::User.active.first_page(2, @user.id)
end

test "#paginated_each pages through available users" do
users = []
Seinfeld::User.paginated_each(2) { |u| users << u }
assert_equal [@disabled, @newb, @user], users
end

test "#paginated_each pages through active users" do
users = []
Seinfeld::User.active.paginated_each(2) { |u| users << u }
assert_equal [@newb, @user], users
end

test "#update_progress with newb, keeping the streak" do
parsed_dates = [Date.civil(2007, 12, 31), Date.civil(2008, 1, 1), Date.civil(2008, 1, 2)]

Expand Down

0 comments on commit 6688363

Please sign in to comment.