Skip to content

Instantly share code, notes, and snippets.

View jorgemdnt's full-sized avatar

Jorge Modesto jorgemdnt

View GitHub Profile

Ruby e Princípios SOLID

Criado por Robert Martin no início dos anos 2000. Cinco princípios que auxiliam na arquitetura de software com o propósito de criar software que atende a três critérios:

  • Tolerância a alterações
  • Facilidade de entendimento
  • Criação de componentes que servem de base para múltiplos softwares

1. O que é Arquitetura?

# coding=utf-8
from urllib import urlencode
from star_wars.exceptions import PersonagemNaoEncontradoException
# [...] StarWarsGatewaySWAPI
def buscar_personagem(self, nome):
recurso = 'people/?'
parametros_de_busca = urlencode({'search': nome})
# coding=utf-8
import unittest
import requests
import mock
from star_wars.starwars_gateway_swapi import StarWarsGatewaySWAPI
from star_wars.exceptions import PersonagemNaoEncontradoException
# [...] StarWarsGatewaySWAPITests
def test_lanca_excecao_quando_personagem_nao_existe(self):
# coding=utf-8
class PersonagemNaoEncontradoException(Exception):
def __init__(self, nome):
message = 'Personagem {} não encontrado'.format(nome)
super(PersonagemNaoEncontradoException, self).__init__(message)
# coding=utf-8
import unittest
import requests
import mock
from star_wars.starwars_gateway_swapi import StarWarsGatewaySWAPI
class StarWarsGatewaySWAPITests(unittest.TestCase):
def setUp(self):
self.client = mock.Mock(spec=requests) # 1
# coding=utf-8
import requests
from urllib import urlencode
class StarWarsGatewaySWAPI(object):
URL = 'http://swapi.co/api/'
def buscar_dados(self):
return requests.get(self.URL)
# [...] StarWarsGatewaySWAPITests
def test_obtem_personagem(self):
resposta = self.dados_star_wars_gateway.buscar_personagem(nome='Anakin')
self.assertEqual(200, resposta.status_code)
conteudo = resposta.json()
# results é uma lista, pegamos o nome do primeiro resultado
self.assertEqual('Anakin Skywalker', conteudo['results'][0]['name'])
# coding=utf-8
import requests
class StarWarsGatewaySWAPI(object):
URL = 'http://swapi.co/api/'
def buscar_dados(self):
return requests.get(self.URL)
# coding=utf-8
class StarWarsGatewaySWAPI(object):
def buscar_dados(self):
pass
# coding=utf-8
import unittest
from star_wars.starwars_gateway_swapi import StarWarsGatewaySWAPI
class StarWarsGatewaySWAPITests(unittest.TestCase):
def setUp(self):
self.dados_starwars_gateway = StarWarsGatewaySWAPI()
def test_obtem_resposta_do_servidor(self):