Skip to content

Commit

Permalink
Verificando por erros ao tentar abrir e ler o banco de dados.
Browse files Browse the repository at this point in the history
  • Loading branch information
victor-torres committed Feb 6, 2016
1 parent 9e9a5af commit d237933
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 9 deletions.
29 changes: 21 additions & 8 deletions open_cnl/open_cnl.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ def __init__(self, caminho_da_base, prefixo_de_referencia,
Realiza uma pesquisa pelo prefixo de referência e salva o número para
futuras comparações (centro de custo), caso ele tenha sido especificado.
"""
self.conn = sqlite3.connect(caminho_da_base)
try:
self.conn = sqlite3.connect(caminho_da_base)
except Exception:
raise ErroAoConectarComBancoDeDados

self.localidade_de_referencia = self._buscar_localidade(
prefixo_de_referencia, sufixo_de_referencia)

Expand Down Expand Up @@ -54,13 +58,16 @@ def buscar_localidade(self, prefixo, sufixo, prefixo_de_referencia=None,

def _buscar_localidade(self, prefixo, sufixo):
"""Função de busca auxiliar para prefixo no banco de dados."""
c = self.conn.cursor()
localidade = c.execute("""
SELECT * FROM open_cnl
WHERE prefixo = ?
AND CAST(numero_da_faixa_inicial as INTEGER) <= ?
AND CAST(numero_da_faixa_final as INTEGER) >= ?;
""", (prefixo, int(sufixo), int(sufixo))).fetchone()
try:
c = self.conn.cursor()
localidade = c.execute("""
SELECT * FROM open_cnl
WHERE prefixo = ?
AND CAST(numero_da_faixa_inicial as INTEGER) <= ?
AND CAST(numero_da_faixa_final as INTEGER) >= ?;
""", (prefixo, int(sufixo), int(sufixo))).fetchone()
except Exception:
raise ErroAoLerDoBancoDeDados

if not localidade:
raise LocalidadeNaoEncontrada
Expand All @@ -69,3 +76,9 @@ def _buscar_localidade(self, prefixo, sufixo):

class LocalidadeNaoEncontrada(Exception):
pass

class ErroAoLerDoBancoDeDados(Exception):
pass

class ErroAoConectarComBancoDeDados(Exception):
pass
7 changes: 6 additions & 1 deletion tests.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import unittest
from open_cnl.open_cnl import OpenCNL, LocalidadeNaoEncontrada
from open_cnl.open_cnl import (OpenCNL, LocalidadeNaoEncontrada,
ErroAoLerDoBancoDeDados)

caminho_da_base = './cnl_anatel.sqlite3'

Expand Down Expand Up @@ -49,6 +50,10 @@ def test_localidade_nao_encontrada(self):
with self.assertRaises(LocalidadeNaoEncontrada):
tarifa = self.cnl.buscar_localidade('9977777', '545454')

def test_erro_ao_ler_do_banco_de_dados(self):
with self.assertRaises(ErroAoLerDoBancoDeDados):
OpenCNL('nao_existe.sqlite3', prefixo_natal, sufixo_natal)


if __name__ == '__main__':
unittest.main()

0 comments on commit d237933

Please sign in to comment.