def test_jobs (self): project_1 = Project.cached("1") project_2 = Project.cached("2") resource_1 = Resource.cached("1") resource_2 = Resource.cached("1") start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation_1 = Allocation(project_1, resource_1, 0, start, end) allocation_2 = Allocation(project_2, resource_2, 0, start, end) job_1 = Job("1.1") job_2 = Job("1.2") job_3 = Job("1.3") job_4 = Job("2.1") job_5 = Job("2.2") charge_1 = Charge(allocation_1, 0) charge_2 = Charge(allocation_1, 0) charge_3 = Charge(allocation_1, 0) charge_4 = Charge(allocation_2, 0) charge_5 = Charge(allocation_2, 0) charge_1.job = job_1 charge_2.job = job_2 charge_3.job = job_3 charge_4.job = job_4 charge_5.job = job_5 job_1.account = project_1 job_2.account = project_1 job_3.account = project_1 job_4.account = project_2 job_5.account = project_2 Session.add_all([job_1, job_2, job_3, job_4, job_5]) assert_equal(list(project_summary([project_1, project_2])), [("1", 3, 0, 0), ("2", 2, 0, 0)])
def test_refunds (self): project_1 = Project.cached("1") project_2 = Project.cached("2") resource_1 = Resource.cached("1") resource_2 = Resource.cached("2") start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation_1 = Allocation(project_1, resource_1, 10, start, end) allocation_2 = Allocation(project_1, resource_1, 20, start, end) allocation_3 = Allocation(project_2, resource_1, 30, start, end) allocation_4 = Allocation(project_2, resource_2, 35, start, end) job_1 = Job("1.1") job_2 = Job("1.2") job_3 = Job("1.3") job_4 = Job("2.1") job_5 = Job("2.2") job_1.account = project_1 job_2.account = project_1 job_3.account = project_1 job_4.account = project_2 job_5.account = project_2 job_1.charges = [Charge(allocation_1, 10)] job_2.charges = [Charge(allocation_2, 15)] job_3.charges = [Charge(allocation_2, 5)] job_4.charges = [Charge(allocation_4, 9)] job_5.charges = [Charge(allocation_4, 8)] Refund(job_1.charges[0], 4) Refund(job_2.charges[0], 3) Refund(job_2.charges[0], 5) Refund(job_5.charges[0], 8) Session.add_all([allocation_1, allocation_2, allocation_3, allocation_4]) assert_equal(list(project_summary([project_1, project_2])), [("1", 3, 18, 12), ("2", 2, 9, 56)])
def test_negative_balance (self): start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation = Allocation( Project.cached("1"), Resource.cached("1"), 10, start, end) Charge(allocation, 20) Session.add_all([allocation]) Session.flush() assert_equal(list(project_summary([allocation])), [('1', 0, 20, 0)])
def test_holds_specific_resource (self): project_1 = Project.cached("1") resource_1 = Resource.cached("1") resource_2 = Resource.cached("2") start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation_1 = Allocation(project_1, resource_1, 10, start, end) allocation_2 = Allocation(project_1, resource_2, 20, start, end) Hold(allocation_1, 10) Hold(allocation_2, 15) Session.add_all([allocation_1, allocation_2]) assert_equal(list(project_summary([project_1], resources=[resource_2])), [("1", 0, 0, 5)])
def test_expired_allocations (self): project_1 = Project.cached("1") project_2 = Project.cached("2") resource_1 = Resource.cached("1") resource_2 = Resource.cached("2") start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation_1 = Allocation(project_1, resource_1, 10, start, start) allocation_2 = Allocation(project_1, resource_1, 20, start, start) allocation_3 = Allocation(project_2, resource_1, 30, start, end) allocation_4 = Allocation(project_2, resource_2, 35, start, start) Session.add_all([ allocation_1, allocation_2, allocation_3, allocation_4]) assert_equal(list(project_summary([project_1, project_2])), [("1", 0, 0, 0), ("2", 0, 0, 30)])
def test_resources (self): project_1 = Project.cached("1") resource_1 = Resource.cached("1") resource_2 = Resource.cached("2") allocation_1 = Allocation(project_1, resource_1, 0, datetime(2000, 1, 1), datetime(2001, 1, 1)) allocation_2 = Allocation(project_1, resource_2, 0, datetime(2000, 1, 1), datetime(2001, 1, 1)) job_1 = Job("1.1") job_2 = Job("1.2") job_3 = Job("2.1") job_1.account = project_1 job_2.account = project_1 job_3.account = project_1 job_1.charges = [Charge(allocation_1, 0)] job_2.charges = [Charge(allocation_1, 0)] job_3.charges = [Charge(allocation_2, 0)] Session.add_all([allocation_1, allocation_2]) assert_equal( list(project_summary([project_1], resources=[resource_1])), [("1", 2, 0, 0)])
def test_holds (self): project_1 = Project.cached("1") project_2 = Project.cached("2") resource_1 = Resource.cached("1") resource_2 = Resource.cached("2") start = datetime(2000, 1, 1) end = start + timedelta(weeks=1) allocation_1 = Allocation(project_1, resource_1, 10, start, start) allocation_2 = Allocation(project_1, resource_1, 20, start, end) allocation_3 = Allocation(project_2, resource_1, 30, start, end) allocation_4 = Allocation(project_2, resource_2, 35, start, end) Hold(allocation_1, 10) Hold(allocation_2, 15) hold_3 = Hold(allocation_2, 5) hold_4 = Hold(allocation_4, 9) Hold(allocation_4, 8) hold_3.active = False hold_4.active = False Session.add_all([ allocation_1, allocation_2, allocation_3, allocation_4]) assert_equal(list(project_summary([project_1, project_2])), [("1", 0, 0, 5), ("2", 0, 0, 57)])
def test_projects (self): projects = [Project.cached("1"), Project.cached("2")] assert_equal(list(project_summary(projects)), [])