public function testFindByCriteria() { $data = ['userId' => 1, 'date' => new DateTime('2016-03-20 01:44:00'), 'amount' => 10000.0, 'description' => 'Work done', 'category' => 'Income', 'note' => 'amazing website']; $income = $this->svc->createIncomeFromArray($data); $this->svc->saveIncome($income); $data = ['userId' => 3, 'date' => new DateTime('2016-06-06 12:44:00'), 'amount' => 4000.0, 'description' => 'Harley Davidson', 'category' => 'Travel', 'note' => 'paid by card']; $expenditure = $this->svc->createExpenditureFromArray($data); $this->svc->saveExpenditure($expenditure); $data = ['userId' => 2, 'date' => new DateTime('2016-01-01 12:44:00'), 'amount' => 100.0, 'description' => 'Train Tickets', 'category' => 'Travel', 'note' => 'paid by cash']; $claim = $this->svc->createExpenseClaimFromArray($data); $this->svc->saveExpenseClaim($claim); $criteria = new EntryCriteria(); $criteria->setDate('2016-03-20 01:44:00'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setDate('2016-03-20 01:44:00'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setDateRange('2016-03-19 01:44:00', '2016-03-21 01:44:00'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setAmount(100); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\ExpenseClaim', $entity); $criteria = new EntryCriteria(); $criteria->setUserId(2); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\ExpenseClaim', $entity); $criteria = new EntryCriteria(); $criteria->setCategory('Travel'); $criteria->setOrder(EntryCriteria::ORDER_USERID); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\ExpenseClaim', $entity); $entity = $results[1]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Expenditure', $entity); $criteria = new EntryCriteria(); $criteria->setDescription('Work Done'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setNote('amazing website'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setType('CLAIM'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\ExpenseClaim', $entity); $criteria = new EntryCriteria(); $criteria->setType('IN'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Income', $entity); $criteria = new EntryCriteria(); $criteria->setType('OUT'); $results = $this->svc->findByCriteria($criteria); $this->assertNotEmpty($results); $entity = $results[0]; $this->assertInstanceOf('Del\\Expenses\\Entity\\Expenditure', $entity); $criteria = new EntryCriteria(); $results = $this->svc->findByCriteria($criteria); foreach ($results as $result) { if ($result instanceof Income) { $this->svc->deleteIncome($result); } elseif ($result instanceof Expenditure) { $this->svc->deleteExpenditure($result); } elseif ($result instanceof ExpenseClaim) { $this->svc->deleteExpenseClaim($result); } } }