/** * @param Order|object $order * @param array $changeSet * * @dataProvider preUpdateDataProvider */ public function testPreUpdate($order, array $changeSet = []) { $isUpdateRequired = array_intersect(['subtotalAmount', 'status'], array_keys($changeSet)); if ($isUpdateRequired) { $entityManager = $this->createEntityManagerMock($order); } else { $entityManager = $this->createEntityManagerMock(); } $listener = new OrderListener($this->listener); $listener->preUpdate(new PreUpdateEventArgs($order, $entityManager, $changeSet)); if ($isUpdateRequired) { $this->assertAttributeEquals([$order->getId() => true], 'ordersForUpdate', $listener); } else { $this->assertAttributeEmpty('ordersForUpdate', $listener); } $listener->preUpdate(new PreUpdateEventArgs($order, $entityManager, $changeSet)); $this->assertObjectHasAttribute('ordersForUpdate', $listener); }
/** * @param Order|object $order * @param float|null $newLifetime * @param array $changeSet * @dataProvider updateDataProvider */ public function testUpdate($order, $newLifetime = null, array $changeSet = array()) { $isUpdateRequired = array_intersect(array('subtotalAmount', 'status'), array_keys($changeSet)); if ($isUpdateRequired && $newLifetime) { $entityManager = $this->createEntityManagerMock($order->getCustomer(), $newLifetime); } else { $entityManager = $this->createEntityManagerMock(); } $listener = new OrderListener(); $listener->preUpdate(new PreUpdateEventArgs($order, $entityManager, $changeSet)); if ($isUpdateRequired) { $this->assertAttributeEquals(array($order->getId() => true), 'ordersForUpdate', $listener); } else { $this->assertAttributeEmpty('ordersForUpdate', $listener); } $listener->postUpdate(new LifecycleEventArgs($order, $entityManager)); $this->assertAttributeEmpty('ordersForUpdate', $listener); }