Skip to content

Instantly share code, notes, and snippets.

@SergeiStruk
Created September 2, 2012 22:00
Show Gist options
  • Save SergeiStruk/3604986 to your computer and use it in GitHub Desktop.
Save SergeiStruk/3604986 to your computer and use it in GitHub Desktop.
testdiff
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