@@ -186,9 +186,11 class Version < ActiveRecord::Base | |||
|
186 | 186 | |
|
187 | 187 | def self.fields_for_order_statement(table=nil) |
|
188 | 188 | table ||= table_name |
|
189 | %w(effective_date name).map {|field| "#{table}.#{field}"} | |
|
189 | ["(CASE WHEN #{table}.effective_date IS NULL THEN 1 ELSE 0 END)", "#{table}.effective_date", "#{table}.name", "#{table}.id"] | |
|
190 | 190 | end |
|
191 | 191 | |
|
192 | scope :sorted, order(fields_for_order_statement) | |
|
193 | ||
|
192 | 194 | # Returns the sharings that +user+ can set the version to |
|
193 | 195 | def allowed_sharings(user = User.current) |
|
194 | 196 | VERSION_SHARINGS.select do |s| |
@@ -107,6 +107,17 class VersionTest < ActiveSupport::TestCase | |||
|
107 | 107 | assert_progress_equal 25.0/100.0*100, v.closed_pourcent |
|
108 | 108 | end |
|
109 | 109 | |
|
110 | def test_should_sort_scheduled_then_unscheduled_versions | |
|
111 | Version.delete_all | |
|
112 | v4 = Version.create!(:project_id => 1, :name => 'v4') | |
|
113 | v3 = Version.create!(:project_id => 1, :name => 'v2', :effective_date => '2012-07-14') | |
|
114 | v2 = Version.create!(:project_id => 1, :name => 'v1') | |
|
115 | v1 = Version.create!(:project_id => 1, :name => 'v3', :effective_date => '2012-08-02') | |
|
116 | v5 = Version.create!(:project_id => 1, :name => 'v5', :effective_date => '2012-07-02') | |
|
117 | ||
|
118 | assert_equal [v5, v3, v1, v2, v4], Version.sorted.all | |
|
119 | end | |
|
120 | ||
|
110 | 121 | context "#behind_schedule?" do |
|
111 | 122 | setup do |
|
112 | 123 | ProjectCustomField.destroy_all # Custom values are a mess to isolate in tests |
General Comments 0
You need to be logged in to leave comments.
Login now