Created
September 2, 2012 22:00
-
-
Save SergeiStruk/3604986 to your computer and use it in GitHub Desktop.
testdiff
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/models/users_audit_search.rb b/app/models/users_audit_search.rb | |
index 74f0a24..52d9c0f 100644 | |
--- a/app/models/users_audit_search.rb | |
+++ b/app/models/users_audit_search.rb | |
@@ -9,7 +9,7 @@ class UsersAuditSearch | |
self.last_name = params[:last_name] | |
self.action = params[:action] | |
self.start_time = parse_audit_date(params, :start_time) | |
- self.end_time = parse_audit_date(params, :end_time) || Date.current | |
+ self.end_time = parse_audit_date(params, :end_time) | |
self.domain = params[:domain] | |
self.role = params[:role] | |
self.organization = params[:organization] | |
@@ -44,7 +44,8 @@ class UsersAuditSearch | |
base_conditions = "" | |
if status.present? | |
ids = UsersAuditSearch.find_by_state(status) | |
- base_conditions += "users.id in (#{ids.join(", ")})" | |
+ ids = ids.empty? ? "\'\'" : ids.join(", ") | |
+ base_conditions += "users.id in (#{ids})" | |
operator = "AND" | |
end | |
base_conditions += " #{operator} candidates.university_id = #{university} " if university.present? | |
@@ -62,7 +63,7 @@ class UsersAuditSearch | |
end | |
def parse_audit_date(params, key) | |
- date = params[key].split("/").map(&:to_i) | |
+ date = params[key].split("/").map(&:to_i) if params[key].present? | |
if date.present? && date.size == 3 | |
return Date.new(2000 + date[2], date[0], date[1]) | |
end | |
diff --git a/spec/models/users_audit_search_spec.rb b/spec/models/users_audit_search_spec.rb | |
index 223db2a..a2339ca 100644 | |
--- a/spec/models/users_audit_search_spec.rb | |
+++ b/spec/models/users_audit_search_spec.rb | |
@@ -28,11 +28,11 @@ describe UsersAuditSearch do | |
end | |
it "returns correct conditions for start time" do | |
- UsersAuditSearch.new("start_time(1i)"=>"2009", "start_time(2i)"=>"12", "start_time(3i)"=>"2").conditions.should == ["(user_audits.created_at >= ?)", "2009-12-02"] | |
+ UsersAuditSearch.new(:start_time => "12/02/09").conditions.should == ["(user_audits.created_at >= ?)", "2009-12-02"] | |
end | |
it "returns correct conditions for end time" do | |
- UsersAuditSearch.new("end_time(1i)"=>"2008", "end_time(2i)"=>"4", "end_time(3i)"=>"5").conditions.should == ["(user_audits.created_at <= ?)", "2008-04-05"] | |
+ UsersAuditSearch.new(:end_time =>"04/05/08").conditions.should == ["(user_audits.created_at <= ?)", "2008-04-05"] | |
end | |
end | |
@@ -104,26 +104,74 @@ describe UsersAuditSearch do | |
it "should find user by role" do | |
UsersAuditSearch.new({:role => "candidate"}).criteria_results.should == [] | |
end | |
+ end | |
- context "find_by_organization" do | |
- before do | |
- @membership = Factory(:membership, :recruiter => @recruiter) | |
- end | |
+ context "find_by_organization" do | |
+ before do | |
+ @recruiter = Factory(:recruiter) | |
...skipping... | |
- end | |
+ it "should not find audit by organization id and candidate role" do | |
+ UsersAuditSearch.new({:organization => @membership.organization_id, :role => "candidate"}).criteria_results.should == [] | |
+ end | |
- it "should not find audit by invalid organization id and recruiter role" do | |
- UsersAuditSearch.new({:organization => (@membership.organization_id + 1), :role => "recruiter"}).criteria_results.should == [] | |
- end | |
+ it "should not find audit by invalid organization id and recruiter role" do | |
+ UsersAuditSearch.new({:organization => (@membership.organization_id + 1), :role => "recruiter"}).criteria_results.should == [] | |
end | |
end | |
- | |
+ | |
+ context "find by university" do | |
+ before do | |
+ @candidate = Factory(:candidate) | |
+ @audit = UserAudit.generate!(:user => @candidate.user) | |
+ end | |
+ | |
+ it "should find audit by organization id and recruiter role" do | |
+ UsersAuditSearch.new({:university => @candidate.university.id, :role => "candidate"}).criteria_results.should == [@audit] | |
+ end | |
+ | |
+ it "should find audit by organization id and recruiter role" do | |
+ UsersAuditSearch.new({:university => @candidate.university.id + 1, :role => "candidate"}).criteria_results.should == [] | |
+ end | |
+ end | |
+ | |
+ context "find by status" do | |
+ before do | |
+ @candidate = Factory(:candidate) | |
+ @audit = UserAudit.generate!(:user => @candidate.user) | |
+ @candidate_audit = CandidateAudit.generate!(:candidate => @candidate, :state => "Incomplete - Dropped out") | |
+ end | |
+ | |
+ it "should find audit if status match" do | |
+ UsersAuditSearch.new({:status => @candidate_audit.state, :role => "candidate"}).criteria_results.should == [@audit] | |
+ end | |
+ | |
+ it "should not find audit if status not match" do | |
+ UsersAuditSearch.new({:status => "Complete", :role => "candidate"}).criteria_results.should == [] | |
+ end | |
+ | |
+ it "should find audit if status, role and university match" do | |
+ params = {:status => @candidate_audit.state, :role => "candidate", :university => @candidate.university.id} | |
+ UsersAuditSearch.new(params).criteria_results.should == [@audit] | |
+ end | |
+ | |
+ it "should find audit if status and role match and university not match" do | |
+ params = {:status => @candidate_audit.state, :role => "candidate", :university => @candidate.university.id + 1} | |
+ UsersAuditSearch.new(params).criteria_results.should == [] | |
+ end | |
+ | |
+ it "should find audit if role and university match and status not match" do | |
+ params = {:status => "Complete", :role => "candidate", :university => @candidate.university.id} | |
+ UsersAuditSearch.new(params).criteria_results.should == [] | |
+ end | |
+ end | |
+ | |
describe "finds by all criteria" do | |
it "returns correct audit" do | |
@domain = Domain.generate!(:name => RegistrationService::STATE) | |
(END) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment