from integrador.classes.Estrategias import Estrategia_CSV from integrador.classes.Estrategias import Estrategia_SQLite from integrador.classes.Estrategias import Estrategia_Texto1 from integrador.classes.Estrategias import Estrategia_Texto2 estrategias = { 'csv': Estrategia_CSV(), 'sqlite': Estrategia_SQLite(), 'texto_1': Estrategia_Texto1(), 'texto_2': Estrategia_Texto2(), } class Contexto(): """ Contexto do integrador Objeto responsável por armazenar o algoritmo (estratégia) e os dados de acesso (credenciais) """ def __init__(self, **kwargs): try: algoritmo_escolhido = kwargs['algoritmo'].lower() objeto = estrategias[algoritmo_escolhido] except KeyError: raise Exception('Algoritmo não implementado') self._algoritmo = objeto self._dados = kwargs if not self._dados_credenciais_validos(): esperado = str(self._algoritmo.parametros_necessarios()) raise Exception('Credendiais inválidas. Necessário: ' + esperado)
def test_metodo_parametros_necessarios(self): objeto = Estrategia_SQLite() dados_retornados = objeto.parametros_necessarios() assert type(dados_retornados) is tuple assert dados_retornados == ('algoritmo', 'db')
def test_metodo_executar(self): dados = {'algoritmo': 'SQLite', 'db': 'integrador/dados/banco1.db'} objeto = Estrategia_SQLite() dados_retornados = objeto.execute(dados) assert type(dados_retornados) is list
def test_instanciar_classe(self): objeto = Estrategia_SQLite() assert isinstance(objeto, Estrategia) assert isinstance(objeto, Estrategia_SQLite)