public function testMassDelete() { $this->queryHelper = $this->getMockBuilder(QueryHelper::class)->setMethods(['buildDeleteQuery'])->setConstructorArgs([$this->connection, new ArrayCache()])->getMock(); $qb = $this->getMockBuilder(QueryBuilder::class)->disableOriginalConstructor()->getMock(); $qb->expects($this->once())->method('execute')->willReturn(29); $this->queryHelper->expects($this->once())->method('buildDeleteQuery')->with('test_table', ['whereColumn' => 'x'])->willReturn($qb); $rows = $this->queryHelper->massDelete('test_table', ['whereColumn' => 'x']); $this->assertEquals(29, $rows); }
/** * Deletes all objects by id * * @param DataObjectInterface[] $objects * @return int Number of db rows effected */ public function deleteAll(array $objects) { if (empty($objects)) { return 0; } foreach ($objects as $object) { $this->checkArgument($object); $this->dispatchEvents('beforeDelete', $object); } $columns = $this->queryHelper->getDbColumns($objects[0]->getTableName()); $ids = DataObject::getIds($objects); if (isset($columns['isDeleted'])) { $rows = $this->queryHelper->massUpdate($this->getTableName(), ['isDeleted' => 1], ['id' => $ids]); } else { $rows = $this->queryHelper->massDelete($this->getTableName(), ['id' => $ids]); } foreach ($objects as $object) { $object->setDeleted(true); $this->dispatchEvents('afterDelete', $object); } return $rows; }