/** * Test cache is correctly flushed on write */ function testCacheFlushing() { // For base classes, aggregate is calculcated on it and all children classes $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 9); // For subclasses, aggregate is calculated for that subclass and it's children only $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 9); $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6); $foo = $this->objFromFixture('AggregateTest_Foo', 'foo1'); $foo->Foo = 12; $foo->write(); // For base classes, aggregate is calculcated on it and all children classes $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 12); // For subclasses, aggregate is calculated for that subclass and it's children only $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 9); $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6); $fab = $this->objFromFixture('AggregateTest_Fab', 'fab1'); $fab->Foo = 15; $fab->write(); // For base classes, aggregate is calculcated on it and all children classes $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 15); // For subclasses, aggregate is calculated for that subclass and it's children only $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 15); $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6); }