public function testSimpleSavePosting() { // Localizador de Serviços $serviceLocator = Application::getApplication()->getServiceManager(); // Camada de Modelo $mAccounts = $serviceLocator->get('Balance\\Model\\Persistence\\Accounts'); // Conta A $accountA = new Parameters(array('type' => AccountType::ACTIVE, 'name' => 'Issue 151 A', 'description' => 'Account A', 'accumulate' => BooleanType::NO)); // Salvar $mAccounts->save($accountA); // Conta B $accountB = new Parameters(array('type' => AccountType::ACTIVE, 'name' => 'Issue 151 B', 'description' => 'Account B', 'accumulate' => BooleanType::NO)); // Salvar $mAccounts->save($accountB); // Camada de Modelo $mPostings = $serviceLocator->get('Balance\\Model\\Postings'); // Lançamento $posting = new Parameters(array('id' => '', 'datetime' => '10/10/2010 10:10:10', 'description' => 'Issue 151 Posting A', 'entries' => array(array('account_id' => (string) $accountA['id'], 'type' => EntryType::CREDIT, 'value' => '100,00'), array('account_id' => (string) $accountB['id'], 'type' => EntryType::DEBIT, 'value' => '100,00')))); try { // Salvar $mPostings->save($posting); } catch (ModelException $e) { // Capturar Formulário $form = $mPostings->getForm(); // Formulário Válido? if ($form->isValid()) { // Erro em outro lugar! throw $e; } // Capturar Mensagens do Formulário $messages = $form->getMessages(); // Erro Encontrado $this->fail('Invalid Form ' . json_encode($messages)); } }
protected function getPersistence() { // Inicialização $persistence = new Balance(); // Localizador de Serviço $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Banco de Dados $db = Application::getApplication()->getServiceManager()->get('db'); // Configurações $serviceLocator->setService('db', $db); // Limpeza de Lançamentos $delete = (new Sql($db))->delete()->from('postings'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Limpeza de Contas $delete = (new Sql($db))->delete()->from('accounts'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Inicializar Banco de Dados $this->initDatabase(); // Apresentação return $persistence; }
public function testEntryValueFormat() { // Gerenciador de Serviços $serviceLocator = Application::getApplication()->getServiceManager(); // Camada de Modelo $mAccounts = $serviceLocator->get('Balance\\Model\\Persistence\\Accounts'); // Conta A $accountA = new Parameters(array('type' => AccountType::ACTIVE, 'name' => 'A', 'description' => 'Issue 152 Account', 'accumulate' => BooleanType::NO)); // Salvar $mAccounts->save($accountA); // Conta B $accountB = new Parameters(array('type' => AccountType::ACTIVE, 'name' => 'B', 'description' => 'Issue 152 Account', 'accumulate' => BooleanType::NO)); // Salvar $mAccounts->save($accountB); // Camada de Modelo $mPostings = $serviceLocator->get('Balance\\Model\\Persistence\\Postings'); // Lançamento $posting = new Parameters(array('datetime' => '10/10/2010 10:10:10', 'description' => 'Issue 152 Posting', 'entries' => array(array('type' => EntryType::CREDIT, 'account_id' => $accountA['id'], 'value' => '100,00'), array('type' => EntryType::DEBIT, 'account_id' => $accountB['id'], 'value' => '100,00')))); // Salvar $mPostings->save($posting); // Carregar Informações $result = $mPostings->find(new Parameters(array('id' => $posting['id']))); // Capturar Primeira Entrada $element = current($result['entries']); // Verificações $this->assertEquals('100,00', $element['value']); // Capturar Segunda Entrada $element = next($result['entries']); // Verificações $this->assertEquals('100,00', $element['value']); }
protected function getPersistence() { // Inicialização $persistence = new Postings(); // Localizador de Serviços $serviceLocator = new ServiceManager(); // Configuração $persistence->setServiceLocator($serviceLocator); // Banco de Dados $db = Application::getApplication()->getServiceManager()->get('db'); // Configuração $serviceLocator->setService('db', $db); // Tabelas $tbAccounts = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Accounts'); $tbPostings = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Postings'); $tbEntries = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Entries'); // Formatador de Datas $formatter = new IntlDateFormatter(null, IntlDateFormatter::MEDIUM, IntlDateFormatter::MEDIUM); // Configuração $serviceLocator->setService('Balance\\Db\\TableGateway\\Accounts', $tbAccounts)->setService('Balance\\Db\\TableGateway\\Postings', $tbPostings)->setService('Balance\\Db\\TableGateway\\Entries', $tbEntries); // Limpeza $tbPostings->delete(function () { // Remover Todos }); $tbAccounts->delete(function () { // Remover Todos }); // Chaves Primárias $primaries = ['postings' => [], 'accounts' => []]; // Inserir Conta 1 $tbAccounts->insert(['name' => 'Account AA', 'type' => AccountType::ACTIVE, 'description' => 'Account AA Description', 'position' => 0, 'accumulate' => 0]); // Captura de Chave Primária $primaries['accounts']['aa'] = (int) $tbAccounts->getLastInsertValue(); // Inserir Conta 2 $tbAccounts->insert(['name' => 'Account BB', 'type' => AccountType::ACTIVE, 'description' => 'Account BB Description', 'position' => 1, 'accumulate' => 0]); // Captura de Chave Primária $primaries['accounts']['bb'] = (int) $tbAccounts->getLastInsertValue(); // Inserir Lançamento 1 $tbPostings->insert(['datetime' => date('c', $formatter->parse('10/10/2010 09:10:10')), 'description' => 'Posting XX']); // Captura de Chave Primária $primaries['postings']['xx'] = (int) $tbPostings->getLastInsertValue(); // Inserir Lançamento 2 $tbPostings->insert(['datetime' => date('c', $formatter->parse('10/10/2010 10:10:10')), 'description' => 'Posting YY']); // Captura de Chave Primária $primaries['postings']['yy'] = (int) $tbPostings->getLastInsertValue(); // Relacionamento 0-0 $tbEntries->insert(['posting_id' => $primaries['postings']['xx'], 'account_id' => $primaries['accounts']['aa'], 'type' => EntryType::CREDIT, 'value' => 100, 'position' => 0]); // Relacionamento 0-1 $tbEntries->insert(['posting_id' => $primaries['postings']['xx'], 'account_id' => $primaries['accounts']['bb'], 'type' => EntryType::DEBIT, 'value' => 100, 'position' => 1]); // Relacionamento 1-0 $tbEntries->insert(['posting_id' => $primaries['postings']['yy'], 'account_id' => $primaries['accounts']['aa'], 'type' => EntryType::CREDIT, 'value' => 200, 'position' => 0]); // Relacionamento 1-1 $tbEntries->insert(['posting_id' => $primaries['postings']['yy'], 'account_id' => $primaries['accounts']['bb'], 'type' => EntryType::DEBIT, 'value' => 200, 'position' => 1]); // Configuração $this->primaries = $primaries; // Apresentação return $persistence; }
protected function getPersistence() { // Inicialização $persistence = new Accounts(); // Conta ZZ $elementZZ = ['name' => 'ZZ Account Test', 'type' => AccountType::ACTIVE, 'description' => 'Description', 'position' => 1, 'accumulate' => 0]; // Conta AA $elementAA = ['name' => 'AA Account Test', 'type' => AccountType::ACTIVE, 'description' => 'Description', 'position' => 0, 'accumulate' => 0]; // Localizador de Serviços $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Banco de Dados $db = Application::getApplication()->getServiceManager()->get('db'); // Configurações $serviceLocator->setService('db', $db); // Tabela de Contas $tbAccounts = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Accounts'); // Configurações $serviceLocator->setService('Balance\\Db\\TableGateway\\Accounts', $tbAccounts); // Remover Todos os Lançamentos $delete = (new Sql($db))->delete()->from('postings'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Remover Todas as Contas $delete = (new Sql($db))->delete()->from('accounts'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Preparar Inserção $insert = (new Sql($db))->insert()->into('accounts')->columns(['name', 'type', 'description', 'position', 'accumulate']); // Adicionar Conta ZZ $insert->values($elementZZ); // Execução $db->query($insert->getSqlString($db->getPlatform()))->execute(); // Adicionar Conta AA $insert->values($elementAA); // Execução $db->query($insert->getSqlString($db->getPlatform()))->execute(); // Consultar as Duas Chaves Primárias $select = (new Sql($db))->select()->from('accounts')->columns(['id', 'name']); $rowset = $db->query($select->getSqlString($db->getPlatform()))->execute(); // Consulta foreach ($rowset as $row) { switch ($row['name']) { case $elementAA['name']: $elementAA['id'] = (int) $row['id']; break; case $elementZZ['name']: $elementZZ['id'] = (int) $row['id']; break; } } // Configurar Elementos $this->data = [$elementAA, $elementZZ]; // Apresentação return $persistence; }
protected function getPersistence() { // Inicialização $persistence = new Postings(); // Gerenciador de Serviços $serviceManager = Application::getApplication()->getServiceManager(); // Localizador de Serviços $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Tabelas $tbPostings = $serviceManager->get('Balance\\Db\\TableGateway\\Postings'); $tbAccounts = $serviceManager->get('Balance\\Db\\TableGateway\\Accounts'); $tbEntries = $serviceManager->get('Balance\\Db\\TableGateway\\Entries'); // Configurações $serviceLocator->setService('db', $serviceManager->get('db'))->setService('Balance\\Db\\TableGateway\\Postings', $tbPostings)->setService('Balance\\Db\\TableGateway\\Accounts', $tbAccounts)->setService('Balance\\Db\\TableGateway\\Entries', $tbEntries); // Limpeza $tbPostings->delete(function () { // Remover Todos }); $tbAccounts->delete(function () { // Remover Todos }); // Criar um Lançamento $tbPostings->insert(['datetime' => '2010-10-10 10:10:10', 'description' => 'Posting Description']); // Chave Primária $this->primary = (int) $tbPostings->getLastInsertValue(); // Inserir Conta A $tbAccounts->insert(['name' => 'Account A', 'type' => AccountType::ACTIVE, 'description' => 'Account A Description', 'position' => 0, 'accumulate' => 0]); // Chave Primária $accountA = (int) $tbAccounts->getLastInsertValue(); // Inserir Conta B $tbAccounts->insert(['name' => 'Account B', 'type' => AccountType::ACTIVE, 'description' => 'Account B Description', 'position' => 1, 'accumulate' => 0]); // Chave Primária $accountB = (int) $tbAccounts->getLastInsertValue(); // Entrada 0 $tbEntries->insert(['posting_id' => $this->primary, 'account_id' => $accountA, 'type' => EntryType::CREDIT, 'value' => 9999999.99, 'position' => 0]); // Entrada 1 $tbEntries->insert(['posting_id' => $this->primary, 'account_id' => $accountB, 'type' => EntryType::DEBIT, 'value' => 9999999.99, 'position' => 1]); // Apresentação return $persistence; }
protected function getPersistence() { // Inicialização $persistence = new Accounts(); // Gerenciador de Serviços $serviceManager = Application::getApplication()->getServiceManager(); // Localizador de Serviços $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Banco de Dados $db = $serviceManager->get('db'); $tbAccounts = $serviceManager->get('Balance\\Db\\TableGateway\\Accounts'); $tbPostings = $serviceManager->get('Balance\\Db\\TableGateway\\Postings'); // Configurações $serviceLocator->setService('db', $db)->setService('Balance\\Db\\TableGateway\\Accounts', $tbAccounts); // Limpeza $tbPostings->delete(function () { // Remover Todos }); $tbAccounts->delete(function () { // Remover Todos }); // Conta A $accountA = new Parameters(['type' => AccountType::ACTIVE, 'name' => 'A', 'description' => '', 'accumulate' => BooleanType::NO]); // Salvar $persistence->save($accountA); // Conta B $accountB = new Parameters(['type' => AccountType::ACTIVE, 'name' => 'B', 'description' => '', 'accumulate' => BooleanType::NO]); // Salvar $persistence->save($accountB); // Conta C $accountC = new Parameters(['type' => AccountType::ACTIVE, 'name' => 'C', 'description' => '', 'accumulate' => BooleanType::NO]); // Salvar $persistence->save($accountC); // Salvamento $this->data = ['A' => $accountA, 'B' => $accountB, 'C' => $accountC]; // Apresentação return $persistence; }
public function testAccountUpdateWithException() { // Erro Esperado $this->setExpectedException('Balance\\Model\\ModelException', 'Database Error'); // Inicialização $persistence = new Accounts(); // Gerenciador de Serviços $serviceManager = Application::getApplication()->getServiceManager(); // Localizador de Serviços $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Configurações de Serviços $serviceLocator->setService('db', $serviceManager->get('db'))->setService('Balance\\Db\\TableGateway\\Accounts', $serviceManager->get('Balance\\Db\\TableGateway\\Accounts')); // Conta para Inserção $data = new Parameters(['type' => AccountType::ACTIVE, 'name' => 'Account A', 'description' => 'Description', 'accumulate' => BooleanType::NO]); // Salvar Dados $persistence->save($data); // Colocar um Tipo Inválido $data['type'] = 'UNKNOWN'; // Salvar Dados $persistence->save($data); }
public function getPersistence() { // Inicialização $persistence = new Balance(); // Localizador de Serviço $serviceLocator = new ServiceManager(); // Configurações $persistence->setServiceLocator($serviceLocator); // Banco de Dados $db = Application::getApplication()->getServiceManager()->get('db'); // Configurações $serviceLocator->setService('db', $db); // Limpeza de Lançamentos $delete = (new Sql($db))->delete()->from('postings'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Limpeza de Contas $delete = (new Sql($db))->delete()->from('accounts'); // Execução $db->query($delete->getSqlString($db->getPlatform()))->execute(); // Tabelas $tbAccounts = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Accounts'); $tbPostings = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Postings'); $tbEntries = Application::getApplication()->getServiceManager()->get('Balance\\Db\\TableGateway\\Entries'); // Chaves Primárias $primaries = array('accounts' => array(), 'postings' => array()); // Receitas $tbAccounts->insert(array('name' => 'Receitas', 'type' => AccountType::PASSIVE, 'description' => 'Descrição de Receitas', 'position' => 0, 'accumulate' => 1)); // Captura de Chave Primária $primaries['accounts']['receitas'] = (int) $tbAccounts->getLastInsertValue(); // Despesas $tbAccounts->insert(array('name' => 'Despesas', 'type' => AccountType::PASSIVE, 'description' => 'Descrição de Despesas', 'position' => 1, 'accumulate' => 1)); // Captura de Chave Primária $primaries['accounts']['despesas'] = (int) $tbAccounts->getLastInsertValue(); // Banco $tbAccounts->insert(array('name' => 'Banco', 'type' => AccountType::ACTIVE, 'description' => 'Descrição de Banco', 'position' => 2, 'accumulate' => 0)); // Captura de Chave Primária $primaries['accounts']['banco'] = (int) $tbAccounts->getLastInsertValue(); // Caixa $tbAccounts->insert(array('name' => 'Caixa', 'type' => AccountType::ACTIVE, 'description' => 'Descrição de Caixa', 'position' => 3, 'accumulate' => 0)); // Captura de Chave Primária $primaries['accounts']['caixa'] = (int) $tbAccounts->getLastInsertValue(); // Inicializar Banco $tbPostings->insert(array('datetime' => '2010-10-10 10:00:00', 'description' => 'Inicialização de Banco')); // Captura de Chave Primária $primaries['postings']['banco_init'] = (int) $tbPostings->getLastInsertValue(); // Sacar Dinheiro do Banco $tbPostings->insert(array('datetime' => '2010-10-10 10:05:00', 'description' => 'Saque de Valores do Banco')); // Captura de Chave Primária $primaries['postings']['banco_remove'] = (int) $tbPostings->getLastInsertValue(); // Pagar uma Conta $tbPostings->insert(array('datetime' => '2010-10-10 10:05:00', 'description' => 'Pagamento de Conta')); // Captura de Chave Primária $primaries['postings']['caixa_remove'] = (int) $tbPostings->getLastInsertValue(); // Entrada: Inicializar Banco $tbEntries->insert(array('posting_id' => $primaries['postings']['banco_init'], 'account_id' => $primaries['accounts']['banco'], 'type' => EntryType::DEBIT, 'value' => 1000, 'position' => 0)); // Entrada: Inicializar Banco $tbEntries->insert(array('posting_id' => $primaries['postings']['banco_init'], 'account_id' => $primaries['accounts']['receitas'], 'type' => EntryType::CREDIT, 'value' => 1000, 'position' => 1)); // Entrada: Sacar Dinheiro do Banco $tbEntries->insert(array('posting_id' => $primaries['postings']['banco_remove'], 'account_id' => $primaries['accounts']['banco'], 'type' => EntryType::CREDIT, 'value' => 500, 'position' => 0)); // Entrada: Sacar Dinheiro do Banco $tbEntries->insert(array('posting_id' => $primaries['postings']['banco_remove'], 'account_id' => $primaries['accounts']['caixa'], 'type' => EntryType::DEBIT, 'value' => 500, 'position' => 1)); // Entrada: Pagar uma Conta $tbEntries->insert(array('posting_id' => $primaries['postings']['caixa_remove'], 'account_id' => $primaries['accounts']['caixa'], 'type' => EntryType::CREDIT, 'value' => 200, 'position' => 0)); // Entrada: Pagar uma Conta $tbEntries->insert(array('posting_id' => $primaries['postings']['caixa_remove'], 'account_id' => $primaries['accounts']['despesas'], 'type' => EntryType::DEBIT, 'value' => 200, 'position' => 1)); // Apresentação return $persistence; }