Merge pull request #2414 from phptek/issue/2398

FIX: Fixes #2398
This commit is contained in:
Sean Harvey 2013-09-12 17:26:13 -07:00
commit e4ff3b8ec8
2 changed files with 32 additions and 1 deletions

View File

@ -212,7 +212,8 @@ class Money extends DBField implements CompositeDBField {
* @return boolean
*/
public function hasAmount() {
return (int)$this->getAmount() != '0';
$a = $this->getAmount();
return (!empty($a) && is_numeric($a));
}
public function isChanged() {

View File

@ -277,6 +277,36 @@ class MoneyTest extends SapphireTest {
$this->assertEquals('£2.46', $obj->obj('MyOtherMoney')->Nice());
}
public function testHasAmount() {
$obj = new MoneyTest_DataObject();
$m = new Money();
$obj->MyMoney = $m;
$m->setValue(array('Amount' => 1));
$this->assertTrue($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 1.00));
$this->assertTrue($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 1.01));
$this->assertTrue($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 0.99));
$this->assertTrue($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 0.01));
$this->assertTrue($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 0));
$this->assertFalse($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 0.0));
$this->assertFalse($obj->MyMoney->hasAmount());
$m->setValue(array('Amount' => 0.00));
$this->assertFalse($obj->MyMoney->hasAmount());
}
}