public function testExpr() { $model = new Kwf_Model_FnF(array('columns' => array('id'), 'data' => array(array('id' => 1)), 'exprs' => array('price' => new Kwf_Model_Select_Expr_Integer(100), 'amount' => new Kwf_Model_Select_Expr_Integer('3'), 'total' => new Kwf_Model_Select_Expr_Multiply(array(new Kwf_Model_Select_Expr_Field('price'), new Kwf_Model_Select_Expr_Field('amount')))))); $this->assertEquals($model->getRow(1)->price, 100); $this->assertEquals($model->getRow(1)->amount, 3); $this->assertEquals($model->getRow(1)->total, 300); $this->assertTrue($model->getRow(1)->price === 100); $this->assertTrue($model->getRow(1)->amount === 3); }
public function testDirWithGroup() { $model = new Kwf_Model_FnF(array('columns' => array('id', 'points', 'gr'), 'data' => array(array('id' => 1, 'points' => 1000, 'gr' => 1), array('id' => 2, 'points' => 500, 'gr' => 2), array('id' => 3, 'points' => -50, 'gr' => 1), array('id' => 4, 'points' => 0, 'gr' => 2), array('id' => 5, 'points' => 10000, 'gr' => 1)), 'exprs' => array('position' => new Kwf_Model_Select_Expr_Position('points', array('gr'), 'asc')))); $this->assertEquals($model->getRow(1)->position, 2); $this->assertEquals($model->getRow(2)->position, 2); $this->assertEquals($model->getRow(3)->position, 1); $this->assertEquals($model->getRow(4)->position, 1); $this->assertEquals($model->getRow(5)->position, 3); }
public function testData() { $model = new Kwf_Model_FnF(); $model->setData(array(array('id' => 1, 'value' => 'foo'), array('id' => 2, 'value' => 'bar'))); $this->assertEquals(count($model->getRows()), 2); $this->assertEquals(count($model->getRows(1)), 1); $this->assertEquals($model->getRow(2)->value, 'bar'); $this->assertEquals($model->getRows()->current()->value, 'foo'); $this->assertEquals($model->getRow(3), null); }
public function testSkipFilter() { $model = new Kwf_Model_FnF(array('data' => array(), 'filters' => array('test' => new Kwf_Filter_Row_AutoFill('abc')))); $row = $model->createRow(); $row->foo = 'foo4'; $row->skip = 0; $row->test = 'bam'; $row->save(); $this->assertEquals('abc', $model->getRow(1)->test); $row->skip = 1; $row->save(); $row->test = 'bam'; $this->assertEquals('bam', $model->getRow(1)->test); }
public function testNumberizeGroupBy() { $f = new Kwf_Filter_Row_Numberize(); $f->setGroupBy('group'); $model = new Kwf_Model_FnF(array('data' => array(array('id' => 1, 'pos' => 1, 'group' => 1, 'foo' => 'foo1'), array('id' => 2, 'pos' => 1, 'group' => 2, 'foo' => 'foo2'), array('id' => 3, 'pos' => 2, 'group' => 1, 'foo' => 'foo3')), 'filters' => array('pos' => $f))); $row = $model->createRow(); $row->pos = 1; $row->group = 2; $row->foo = 'foo4'; $row->save(); $this->assertEquals(1, $model->getRow(4)->pos); $this->assertEquals(2, $model->getRow(2)->pos); $this->assertEquals(1, $model->getRow(1)->pos); $this->assertEquals(2, $model->getRow(2)->pos); }
public function testDefaultValues() { $model = new Kwf_Model_FnF(array('columns' => array('id', 'foo', 'data'), 'data' => array(array('id' => 1, 'foo' => 'bar', 'data' => '')), 'dependentModels' => array('Child' => new Kwf_Model_FieldRows(array('fieldName' => 'data', 'default' => array('foo' => 'defaultFoo')))))); $row = $model->getRow(1); $cRow = $row->createChildRow('Child'); $this->assertEquals('defaultFoo', $cRow->foo); }
public function testUniqueAsciiGroupBy() { $f = new Kwf_Filter_Row_UniqueAscii('name'); $f->setGroupBy('group'); $model = new Kwf_Model_FnF(array('data' => array(array('id' => 1, 'name' => 'Name1', 'group' => 1, 'test' => 'name1'), array('id' => 2, 'name' => 'Name2', 'group' => 2, 'test' => 'name2')), 'filters' => array('test' => $f))); $row = $model->createRow(); $row->group = 1; $row->name = 'Name1'; $row->save(); $this->assertEquals('name1_1', $model->getRow(3)->test); $row = $model->createRow(); $row->group = 2; $row->name = 'Name1'; $row->save(); $this->assertEquals('name1', $model->getRow(4)->test); }
public function testAutoFillId() { $model = new Kwf_Model_FnF(array('data' => array(), 'filters' => array('test' => new Kwf_Filter_Row_AutoFill('x{id}')))); $row = $model->createRow(); $row->foo = 'foo4'; $row->save(); $this->assertEquals('x1', $model->getRow(1)->test); }
public function testExpr() { $model = new Kwf_Model_FnF(array('columns' => array('id', 'date'), 'data' => array(array('id' => 1, 'date' => '2013-12-04'), array('id' => 2, 'date' => '2003-12-05')), 'exprs' => array('year1' => new Kwf_Model_Select_Expr_Date_Year('date'), 'year2' => new Kwf_Model_Select_Expr_Date_Year('date', Kwf_Model_Select_Expr_Date_Year::FORMAT_DIGITS_TWO), 'format1' => new Kwf_Model_Select_Expr_Date_Format('date'), 'format2' => new Kwf_Model_Select_Expr_Date_Format('date', 'd.m.Y')))); $this->assertEquals($model->getRow(1)->year1, 2013); $this->assertEquals($model->getRow(2)->year1, 2003); $this->assertEquals($model->getRow(1)->year2, 13); $this->assertEquals($model->getRow(2)->year2, 03); $this->assertEquals($model->getRow(1)->format1, '2013-12-04'); $this->assertEquals($model->getRow(2)->format1, '2003-12-05'); $this->assertEquals($model->getRow(1)->format2, '04.12.2013'); $this->assertEquals($model->getRow(2)->format2, '05.12.2003'); }
public function testBirthWithReference() { $today = date('Y-m-d'); $today = date('Y-m-d', strtotime("{$today} -1 year")); $eighteen = date("Y-m-d", strtotime("{$today} -17 year")); $tomorrow = date("Y-m-d", strtotime("{$today} +1 day")); $yesterday = date("Y-m-d", strtotime("{$today} - 1 day")); $newYearsEve = date('Y') - 1 . "-12-31"; $expectNYE = 0; $expectNY = 1; $realTomorrow = date("Y-m-d", strtotime("{$tomorrow} +1 year")); //if it is new Year's Eve the expected age for new Year = 2; if ($realTomorrow == date('Y') . '-12-31') { $expectNYE = 1; } //if it is new Year's Eve the expected age for new Year = 2; if (date('m-d') == '12-31') { $expectNY = 2; } $newYear = date('Y') - 1 . "-01-01"; $model = new Kwf_Model_FnF(array('columns' => array('id', 'birth'), 'data' => array(array('id' => 1, 'birth' => $eighteen), array('id' => 2, 'birth' => $today), array('id' => 3, 'birth' => $tomorrow), array('id' => 4, 'birth' => $yesterday), array('id' => 5, 'birth' => $newYearsEve), array('id' => 6, 'birth' => $newYear)), 'exprs' => array('age' => new Kwf_Model_Select_Expr_Date_Age('birth', new Kwf_Date($realTomorrow))))); $this->assertEquals($model->getRow(1)->age, 18); $this->assertEquals($model->getRow(2)->age, 1); $this->assertEquals($model->getRow(3)->age, 1); $this->assertEquals($model->getRow(4)->age, 1); $this->assertEquals($model->getRow(5)->age, $expectNYE); $this->assertEquals($model->getRow(6)->age, $expectNY); }
public function testIt() { $model = new Kwf_Model_FnF(array('columns' => array(), 'data' => array(array('id' => 1, 'foo' => 'bar', 'data' => serialize(array('autoId' => 2, 'data' => array(array('id' => 1, 'blub' => 'blub1', 'foo' => 'foo'), array('id' => 2, 'blub' => 'blub2')))))), 'dependentModels' => array('Child' => new Kwf_Model_RowsSubModel_Proxy(array('proxyModel' => new Kwf_Model_FieldRows(array('fieldName' => 'data'))))))); $row = $model->getRow(1); $this->assertEquals($row->foo, 'bar'); $rows = $row->getChildRows('Child'); $this->assertEquals(count($rows), 2); $this->assertEquals($rows->current()->blub, 'blub1'); $this->assertEquals($rows->current()->id, 1); $rows->current()->foo = 'foo'; $rows->current()->save(); $row->blub1 = 'blub1'; $row->save(); $this->assertEquals($model->getData(), array(array('id' => 1, 'foo' => 'bar', 'data' => serialize(array('autoId' => 2, 'data' => array(array('id' => 1, 'blub' => 'blub1', 'foo' => 'foo'), array('id' => 2, 'blub' => 'blub2')))), 'blub1' => 'blub1'))); }
public function testSimple() { $m1 = new Kwf_Model_FnF(); $m2 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $form->add(new Kwf_Form_Field_TextField('test1')); $form->add(new Kwf_Form_Field_MultiFields($m2))->setReferences(array('columns' => array('test1_id'), 'refColumns' => array('id')))->fields->add(new Kwf_Form_Field_TextField('test2')); $post = array('test1' => 'blub', 'Kwf_Model_FnF' => array(array('test2' => 'bab'))); $post = $form->processInput(null, $post); $form->validate(null, $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $r = $m1->getRow(1); $this->assertEquals('blub', $r->test1); $r = $m2->getRow(1); $this->assertEquals('bab', $r->test2); $this->assertEquals(1, $r->test1_id); }
public function testExprEqualExpr() { $model = new Kwf_Model_FnF(array('exprs' => array('test' => new Kwf_Model_Select_Expr_Equals('value', new Kwf_Model_Select_Expr_Field('value'))))); $model->setData(array(array('id' => 1, 'value' => 10), array('id' => 2, 'value' => 20), array('id' => 3, 'value' => 30), array('id' => 4, 'value' => 40), array('id' => 5, 'value' => 50), array('id' => 6, 'value' => 60))); $this->assertTrue($model->getRow(1)->test); $rows = $model->getRows($model->select()->where(new Kwf_Model_Select_Expr_Equals('value', new Kwf_Model_Select_Expr_Field('value')))); $this->assertEquals(count($rows), $model->countRows()); }
public function testDirtyColumns() { $model = new Kwf_Model_FnF(); $model->setData(array(array('id' => 1, 'value' => 'foo'), array('id' => 2, 'value' => 'bar'))); $row = $model->getRow(1); $this->assertEquals($row->getDirtyColumns(), array()); $this->assertEquals($row->isDirty(), false); $row->value = 'blubb'; $this->assertEquals($row->getDirtyColumns(), array('value')); $this->assertEquals($row->isDirty(), true); }
public function testHigherEqual() { $model = new Kwf_Model_FnF(array('columns' => array('id', 'value'), 'data' => array(array('id' => 1, 'value' => -10000000), array('id' => 2, 'value' => -1), array('id' => 3, 'value' => 0), array('id' => 4, 'value' => 1), array('id' => 5, 'value' => 10000000)), 'exprs' => array('higher1' => new Kwf_Model_Select_Expr_HigherEqual('value', -10000000), 'higher2' => new Kwf_Model_Select_Expr_HigherEqual('value', -1), 'higher3' => new Kwf_Model_Select_Expr_HigherEqual('value', 0), 'higher4' => new Kwf_Model_Select_Expr_HigherEqual('value', 1), 'higher5' => new Kwf_Model_Select_Expr_HigherEqual('value', 10000000)))); $this->assertEquals($model->getRow(1)->higher1, true); $this->assertEquals($model->getRow(1)->higher2, false); $this->assertEquals($model->getRow(1)->higher3, false); $this->assertEquals($model->getRow(1)->higher4, false); $this->assertEquals($model->getRow(1)->higher5, false); $this->assertEquals($model->getRow(2)->higher1, true); $this->assertEquals($model->getRow(2)->higher2, true); $this->assertEquals($model->getRow(2)->higher3, false); $this->assertEquals($model->getRow(2)->higher4, false); $this->assertEquals($model->getRow(2)->higher5, false); $this->assertEquals($model->getRow(3)->higher1, true); $this->assertEquals($model->getRow(3)->higher2, true); $this->assertEquals($model->getRow(3)->higher3, true); $this->assertEquals($model->getRow(3)->higher4, false); $this->assertEquals($model->getRow(3)->higher5, false); $this->assertEquals($model->getRow(4)->higher1, true); $this->assertEquals($model->getRow(4)->higher2, true); $this->assertEquals($model->getRow(4)->higher3, true); $this->assertEquals($model->getRow(4)->higher4, true); $this->assertEquals($model->getRow(4)->higher5, false); $this->assertEquals($model->getRow(5)->higher1, true); $this->assertEquals($model->getRow(5)->higher2, true); $this->assertEquals($model->getRow(5)->higher3, true); $this->assertEquals($model->getRow(5)->higher4, true); $this->assertEquals($model->getRow(5)->higher5, true); }
public function testDirtyColumnsOnChange() { $model = new Kwf_Model_FnF(array('columns' => array('id', 'foo', 'data'), 'data' => array(array('id' => 1, 'foo' => 'bar', 'data' => json_encode(array('blub' => 'blub')))), 'siblingModels' => array(new Kwf_Model_Field_FieldModel(array('fieldName' => 'data'))))); $row = $model->getRow(1); $row->blub = 'blub2'; $this->assertEquals($row->getDirtyColumns(), array('blub')); }