def test_cadastrar_sistema_cultura_com_cadastrador_ja_possui_sistema(login, client):
    ente_federado = mommy.make("EnteFederado", cod_ibge=20563)
    gestor = Gestor(cpf="590.328.900-26", rg="1234567", orgao_expeditor_rg="ssp", estado_expeditor=29,
        nome="nome", telefone_um="123456", email_institucional="*****@*****.**", tipo_funcionario=2)
    sede = Sede(cnpj="70.658.964/0001-07", endereco="endereco", complemento="complemento",
        cep="72430101", bairro="bairro", telefone_um="123456")

    sistema_cultura = mommy.make("SistemaCultura", _fill_optional=['ente_federado', 
        'sede', 'gestor'], cadastrador=login)

    url = reverse("adesao:home")
    client.get(url)

    url = reverse("adesao:cadastrar_sistema")

    response = client.post(
        url,
        {
            "ente_federado": ente_federado.pk,
            "cpf": gestor.cpf,
            "rg": gestor.rg,
            "nome": gestor.nome,
            "orgao_expeditor_rg": gestor.orgao_expeditor_rg,
            "estado_expeditor": gestor.estado_expeditor,
            "telefone_um": gestor.telefone_um,
            "email_institucional": gestor.email_institucional,
            "tipo_funcionario": gestor.tipo_funcionario,
            "cnpj": sede.cnpj,
            "endereco": sede.endereco,
            "complemento": sede.complemento,
            "cep": sede.cep,
            "bairro": sede.bairro,
            "telefone_um": sede.telefone_um,
            "termo_posse": SimpleUploadedFile(
                "test_file.pdf", bytes("test text", "utf-8")
            ),
            "cpf_copia": SimpleUploadedFile(
                "test_file2.pdf", bytes("test text", "utf-8")
            ),
            "rg_copia": SimpleUploadedFile(
                "test_file2.pdf", bytes("test text", "utf-8")
            ),
        },
    )

    gestor_salvo = Gestor.objects.last()
    sede_salva = Sede.objects.last()
    sistema_salvo = SistemaCultura.sistema.get(ente_federado=ente_federado)

    assert sistema_salvo.ente_federado.cod_ibge == ente_federado.cod_ibge
    assert sistema_salvo.gestor == gestor_salvo
    assert sistema_salvo.sede == sede_salva
    assert sistema_salvo.cadastrador == login
    assert login.sistema_cultura.count() == 2
    assert client.session['sistemas'][-1] == {"id": sistema_salvo.id, 
        "ente_federado__nome": sistema_salvo.ente_federado.nome}
def test_envio_email_em_nova_adesao(client, cnpj):
    user = User.objects.create(username="******", email="*****@*****.**")
    user.set_password("123456")
    user.save()
    usuario = mommy.make("Usuario",
                         user=user,
                         nome_usuario="teste",
                         email_pessoal="*****@*****.**")

    ente_federado = mommy.make("EnteFederado", cod_ibge=123456)

    client.login(username=user.username, password="******")

    gestor = Gestor(cpf="590.328.900-26",
                    rg="1234567",
                    orgao_expeditor_rg="ssp",
                    estado_expeditor=29,
                    nome="nome",
                    telefone_um="123456",
                    email_institucional="*****@*****.**",
                    email_pessoal="*****@*****.**",
                    tipo_funcionario=2)
    sede = Sede(cnpj="28.134.084/0001-75",
                endereco="endereco",
                complemento="complemento",
                cep="72430101",
                bairro="bairro",
                telefone_um="123456")

    url = reverse("adesao:cadastrar_sistema")

    response = client.post(
        url,
        {
            "ente_federado":
            ente_federado.pk,
            "cpf":
            gestor.cpf,
            "rg":
            gestor.rg,
            "nome":
            gestor.nome,
            "orgao_expeditor_rg":
            gestor.orgao_expeditor_rg,
            "estado_expeditor":
            29,
            "telefone_um":
            gestor.telefone_um,
            "email_institucional":
            gestor.email_institucional,
            "email_pessoal":
            gestor.email_pessoal,
            "tipo_funcionario":
            gestor.tipo_funcionario,
            "termo_posse":
            SimpleUploadedFile("test_file.pdf", bytes("test text", "utf-8")),
            "cpf_copia":
            SimpleUploadedFile("test_file2.pdf", bytes("test text", "utf-8")),
            "rg_copia":
            SimpleUploadedFile("test_file2.pdf", bytes("test text", "utf-8")),
            "cnpj":
            sede.cnpj,
            "endereco":
            sede.endereco,
            "complemento":
            sede.complemento,
            "cep":
            sede.cep,
            "bairro":
            sede.bairro,
            "telefone_um":
            sede.telefone_um,
        },
    )

    sistema = SistemaCultura.sistema.get(
        ente_federado__cod_ibge=ente_federado.cod_ibge)

    texto = f"""Prezado Gestor,

Um novo ente federado acabou de se cadastrar e fazer a solicitação de nova adesão.
Segue abaixo os dados de contato do ente federado:

Dados do Ente Federado:
Cadastrador: {sistema.cadastrador.nome_usuario}
Nome do Prefeito: {sistema.gestor.nome}
Cidade: {sistema.ente_federado.nome}
Email Institucional: {sistema.gestor.email_institucional}
Telefone de Contato: {sistema.sede.telefone_um}
Link da Adesão: http://snc.cultura.gov.br/gestao/detalhar/{sistema.ente_federado.cod_ibge}

Equipe SNC
Secretaria Especial da Cultura / Ministério do Turismo"""

    assert len(mail.outbox) == 1
    assert (
        mail.outbox[0].subject ==
        "Secretaria Especial da Cultura / Ministério do Turismo - SNC - SOLICITAÇÃO NOVA ADESÃO"
    )
    assert mail.outbox[0].from_email == "*****@*****.**"
    assert mail.outbox[0].to == [
        user.email, usuario.email_pessoal, sistema.gestor.email_pessoal,
        sistema.gestor.email_institucional
    ]
    assert mail.outbox[0].body == texto