function testCreatePair() { $staff_1 = new Staff(); $staff_1->set(array('first_name' => 'First', 'last_name' => 'User')); $staff_1->save(); $staff_2 = new Staff(); $staff_2->set(array('first_name' => 'Second', 'last_name' => 'User')); $staff_2->save(); $h = new Hour(); $h->set(array('hours' => 6, 'staff_id' => $staff_1->id, 'pair_id' => $staff_2->id)); $h->updateOrCreateWithPair(); $this->assertTrue($h->id, 'should have an id'); $this->assertTrue($h->get('pair_hour_id'), 'should have a pair hour id'); $h2 = $h->getPairHour(); $this->assertIsA($h2, 'Hour'); $this->assertTrue($h2->id, 'should have an hour id'); $this->assertEqual($h2->get('hours'), 6); $h->set(array('hours' => 7)); $h->updateOrCreateWithPair(); $h3 = $h->getPairHour(); $this->assertEqual($h2->id, $h3->id); $this->assertEqual($h3->get('hours'), 7); $this->assertEqual($h3->getPairName(), $staff_1->getName()); $this->assertEqual($h->getPairName(), $staff_2->getName()); }
function testDestroyAssociatedRecords() { $c = new Company(); $c->set(array('name' => 'destroy_test')); $c->save(); $p = new Project(); $p->set(array('company_id' => $c->id, 'name' => 'destroy_project_test')); $p->save(); $e = new Estimate(); $e->set(array('project_id' => $p->id, 'name' => 'destroy_estimate_test')); $e->save(); $h = new Hour(); $h->set(array('estimate_id' => $e->id, 'name' => 'destroy_hour_test')); $h->save(); $ch = new Charge(); $ch->set(array('company_id' => $c->id, 'name' => 'destroy_charge_test')); $ch->save(); $con = new SupportContract(); $con->set(array('company_id' => $c->id, 'name' => 'destroy_contract_test')); $con->save(); $sup_hr = new Hour(); $sup_hr->set(array('support_contract_id' => $con->id, 'description' => 'destroy_support_hour_test')); $sup_hr->save(); $pay = new Payment(); $pay->set(array('company_id' => $c->id, 'name' => 'destroy_payment_test')); $pay->save(); $deleted_items = array('company' => $c->id, 'project' => $p->id, 'estimate' => $e->id, 'hour' => $h->id, 'support_hour' => $sup_hr->id, 'charge' => $ch->id, 'support_contract' => $con->id, 'payment' => $pay->id); $c->destroyAssociatedRecords(); $c->delete(); $dbcon = AMP::getDb(); foreach ($deleted_items as $table => $id) { if ($table == 'support_hour') { $table = 'hour'; } $sql = 'SELECT * FROM ' . $table . ' WHERE id = ' . $id; if ($records = $dbcon->Execute($sql)) { $this->assertEqual($records->RecordCount(), 0, "{$table} not deleted correctly: %s"); } else { trigger_error($dbcon->ErrorMsg()); } } }
function testCreateFormForOneObject() { $hour = new Hour(); $hour->set(array('description' => 'SimpleTest Hour Description 2', 'support_contract_id' => 1, 'date' => '2010-02-20', 'hours' => '2.5', 'discount' => '1')); $hour->save(); $hour_id = $hour->get('id'); $form = new Form(array('controller' => 'Hour', 'action' => 'update', 'method' => 'post')); $f = $form->getFieldSetFor($hour); $html = $f->description; $html .= $f->hours; $html .= $f->discount; $form->content = $html; $form_html = $form->html; $correct_html = '<form method="post" action="index.php" class = "standard-form" > <input type="hidden" name="controller" value="Hour"/> <input type="hidden" name="action" value="update"/> <input type="text" value="SimpleTest Hour Description 2" id = "ActiveRecord[Hour][' . $hour_id . '][description]" class = "description-field Hour-field text-field" name = "ActiveRecord[Hour][' . $hour_id . '][description]" /><input type="text" value="2.5" id = "ActiveRecord[Hour][' . $hour_id . '][hours]" class = "hours-field Hour-field float-field" name = "ActiveRecord[Hour][' . $hour_id . '][hours]" /><input type="text" value="1" id = "ActiveRecord[Hour][' . $hour_id . '][discount]" class = "discount-field Hour-field float-field" name = "ActiveRecord[Hour][' . $hour_id . '][discount]" /><div class="submit-container"><input type="submit" class="submit_btn" value="submit"/></div> </form> '; $this->assertEqual($correct_html, $form_html); $hour->delete(); }
function testCalculateBalanceWithDateRange() { #Company $cp = new Company(); $cp->set(array('name' => 'Test Company', 'status' => 'active')); $cp->save(); $pb = new CompanyPreviousBalance(); $pb->set(array('company_id' => $cp->id, 'amount' => 600.25, 'date' => '2010-01-30')); $pb->save(); $this->assertWithinMargin($pb->getAmount(), '600.25', '.01'); ######### Support $sc = new SupportContract(); $sc->set(array('company_id' => $cp->id, 'domain_name' => 'Test', 'start_date' => '2010-01-01', 'end_date' => '2010-04-30', 'hourly_rate' => '120', 'support_hours' => '.5', 'monthly_rate' => '50')); $sc->save(); # add support hours # before previous balance $h = new Hour(); $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-01-20', 'hours' => '2.5')); $h->save(); # in range $h = new Hour(); $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-02-20', 'hours' => '2.5')); $h->save(); # in range $h = new Hour(); $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-03-20', 'hours' => '2.5')); $h->save(); # out of range $h = new Hour(); $h->set(array('description' => 'Test', 'support_contract_id' => $sc->id, 'date' => '2010-05-20', 'hours' => '2')); $h->save(); ### Support Totals = in range is 2 months x 50 = 100, 4 @ 120 = 480 = 580 $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $total = $cp->calculateSupportTotal($date_range); $this->assertEqual($total, 580); ###### Project $pj = new Project(); $pj->set(array('name' => 'Test Project', 'company_id' => $cp->id, 'hourly_rate' => '120')); $pj->save(); # Add an Estimate item #1 $es1 = new Estimate(); $es1->set(array('project_id' => $pj->id, 'name' => 'Test Estimate 1', 'high_hours' => '10', 'low_hours' => '5')); $es1->save(); # Add an Estimate item #2 $es2 = new Estimate(); $es2->set(array('project_id' => $pj->id, 'name' => 'Test Estimate 2', 'high_hours' => '10', 'low_hours' => '5')); $es2->save(); # Add some before previous balance hours for #1 - 5 hours at 120 = 600 $hr = new Hour(); $hr->set(array('estimate_id' => $es1->id, 'description' => 'Test Hours for Estimate 1', 'date' => '2010-01-15', 'hours' => '5')); $hr->save(); # Add some in range hours for #1 - 5 hours at 120 = 600 $hr = new Hour(); $hr->set(array('estimate_id' => $es1->id, 'description' => 'Test Hours for Estimate 1', 'date' => '2010-02-15', 'hours' => '5')); $hr->save(); # Add some in range hours for #2 - 5 hours at 120 = 600 $hr = new Hour(); $hr->set(array('estimate_id' => $es2->id, 'description' => 'Test Hours for Estimate 2', 'date' => '2010-02-15', 'hours' => '5')); $hr->save(); # Add some out of range hours for #2 - 5 hours at 120 = 600 $hr = new Hour(); $hr->set(array('estimate_id' => $es2->id, 'description' => 'Test Hours for Estimate 2', 'date' => '2010-05-15', 'hours' => '5')); $hr->save(); ## Project Totals = In range 1200, out of range 1800 $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $total = $cp->calculateProjectsTotal($date_range); $this->assertEqual($total, 1200); #Charge # before previous balance $cr = new Charge(); $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-01-10', 'amount' => '20.50')); $cr->save(); # in date range $cr = new Charge(); $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-03-14', 'amount' => '50.25')); $cr->save(); # in date range $cr = new Charge(); $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-03-20', 'amount' => '50')); $cr->save(); # out of date range $cr = new Charge(); $cr->set(array('name' => 'Test', 'company_id' => $cp->id, 'date' => '2010-05-15', 'amount' => '50')); $cr->save(); # Total Charges = in range 100.25, out of range 150.25 $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $charge_total = $cp->calculateChargesTotal($date_range); $this->assertEqual($charge_total, 100.25); ## Test Total Costs # Charges 100.25 + project 1200 + support 580 $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $total = $cp->calculateCosts($date_range); $this->assertEqual($total, 1880.25); ## Payments # add payment before previous balance date $py = new Payment(); $py->set(array('company_id' => $cp->id, 'date' => '2010-01-22', 'amount' => '20.50')); $py->save(); # add payment in range $py = new Payment(); $py->set(array('company_id' => $cp->id, 'date' => '2010-02-10', 'amount' => '20.00')); $py->save(); # add payment in range $py = new Payment(); $py->set(array('company_id' => $cp->id, 'date' => '2010-03-01', 'amount' => '120.00')); $py->save(); # add payment out of range $py = new Payment(); $py->set(array('company_id' => $cp->id, 'date' => '2010-04-01', 'amount' => '20.25')); $py->save(); # Total Payments are 20 + 120 = 140 in range and after previous balance $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $payment_total = $cp->calculatePaymentsTotal($date_range); $this->assertEqual($payment_total, 140); #### fails because the previous balance isn't getting included FIX ME!! # Total Balance Costs 1880.25 - Payments 140 + Previous balance 600.25 = 2340.5 $date_range = array('start_date' => '2010-01-01', 'end_date' => '2010-03-31'); $balance = $cp->calculateBalance($date_range); $this->assertWithinMargin($balance, 2340.5, 0.001); ## clean up $cp->destroyAssociatedRecords(); $cp->delete(); }