Skip to content

Reorganiza os testes de organization#1451

Merged
robertatakenaka merged 5 commits into
scieloorg:mainfrom
robertatakenaka:fix_organizations
Jul 22, 2026
Merged

Reorganiza os testes de organization#1451
robertatakenaka merged 5 commits into
scieloorg:mainfrom
robertatakenaka:fix_organizations

Conversation

@robertatakenaka

@robertatakenaka robertatakenaka commented Jul 22, 2026

Copy link
Copy Markdown
Member

O que esse PR faz?

Corrige três problemas concretos encontrados nos testes e no model de
organization:

  • Imports quebrados: organization/tests/tests.py usava imports
    relativos (.exceptions, .models, .tasks), substituídos por imports
    absolutos (organization.exceptions/models/tasks), evitando falhas
    dependendo de como o módulo é descoberto/executado pelo runner de
    testes.
  • Print de debug em produção: BaseOrganization.create tinha um
    print(obj) esquecido logo antes do return obj, executado toda vez
    que uma organização é criada — removido sem impacto funcional.
  • Teste assumindo constraint inexistente: NormAffiliationTest. test_unique_together_constraint esperava um IntegrityError por
    violação de unique_together, mas o model NormAffiliation não tem
    essa constraint configurada atualmente. Marcado com @unittest.skip,
    com mensagem explicando que o model e a migration precisam ser
    ajustados antes de reativá-lo.

Além disso, os testes de organization foram organizados em pacote com
test_mixins.py (reutilizando os mixins de
location/tests/test_mixins.py) e test_normaff.py dedicado a
NormAffiliation. As fixtures de acronym também foram corrigidas
("Acronym of institution", 22 caracteres, ultrapassava o
max_length=20 do campo; substituído por "INSTITUTIONACRON").

Onde a revisão poderia começar?

organization/models.py, pela remoção do print(obj) em
BaseOrganization.create. Em seguida, organization/tests/test_normaff.py,
para o skip documentado, e organization/tests/tests.py, para os imports
corrigidos.

Como este poderia ser testado manualmente?

  1. Rodar python manage.py test organization.tests e confirmar que todos
    os testes passam (exceto test_unique_together_constraint, marcado
    como skip).
  2. Criar uma organização via Organization.create_or_update(...) e
    confirmar, inspecionando o console/log, que nenhuma saída de print
    aparece.
  3. Conferir que organization/tests/tests.py importa corretamente
    independente do diretório de onde o test runner é chamado.
django@e129a32329c5:/app$ python manage.py test -v 0 organization.tests --keepdb
WARNING 2026-07-22 14:54:48,630 profiling_tools 17812 281473444560192 PROFILING_ENABLED=True
WARNING 2026-07-22 14:54:48,630 profiling_tools 17812 281473444560192 PROFILING_LOG_ALL=True
WARNING 2026-07-22 14:54:48,630 profiling_tools 17812 281473444560192 PROFILING_LOG_SLOW_REQUESTS=0.2
WARNING 2026-07-22 14:54:48,630 profiling_tools 17812 281473444560192 PROFILING_LOG_HIGH_MEMORY=20
/usr/local/lib/python3.11/site-packages/django/db/backends/utils.py:98: RuntimeWarning: Accessing the database during app initialization is discouraged. To fix this warning, avoid executing queries in AppConfig.ready() or when your app modules are imported.
  warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning)
System check identified some issues:

WARNINGS:
?: (urls.W005) URL namespace 'pid_provider' isn't unique. You may not be able to reverse all URLs in this namespace
?: (wagtailadmin.W003) The WAGTAILADMIN_BASE_URL setting is not defined
	HINT: This should be the base URL used to access the Wagtail admin site. Without this, admin URLs outside of the admin (e.g. notification emails and the user bar) will not display correctly.
?: settings.ACCOUNT_AUTHENTICATION_METHOD is deprecated, use: settings.ACCOUNT_LOGIN_METHODS = {'username'}
?: settings.ACCOUNT_EMAIL_REQUIRED is deprecated, use: settings.ACCOUNT_SIGNUP_FIELDS = ['email*', 'username*', 'password1*', 'password2*']
pid_provider.FixPidV2.pid_provider_xml: (fields.W342) Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.
	HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.

System check identified 5 issues (0 silenced).
7
----------------------------------------------------------------------
Ran 11 tests in 0.362s

OK (skipped=1)

Algum cenário de contexto que queira dar?

Este PR depende do PR de location/tests/ (mixins de Country/State/
City/Location reutilizados aqui). O print(obj) e os imports
quebrados foram encontrados incidentalmente durante a reorganização da
suíte de testes de organization — não são bugs novos, mas problemas
antigos que só ficaram visíveis ao mexer nesses arquivos.

Screenshots

Não aplicável.

Quais são os tickets relevantes?

relacionado #1450

Referências

Depende do PR de reorganização de location/tests/.


Segurança da informação (NSI.04)

Este PR manipula dados sensíveis ou pessoais (LGPD)?

  • Não

Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?

  • Não

Este PR introduz, atualiza ou remove dependências de terceiros?

  • Não

Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?

  • Não aplicável a este PR (justifique): remoção de print de debug e reorganização de testes, sem alteração de regra de negócio.

Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?

  • Não

Este PR expõe novos endpoints, telas ou serviços?

  • Não

Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?

  • Não, nenhum segredo foi commitado

Propósito
Eliminar saída de debug (print) que vazava para stdout em produção/testes
a cada criação de organização.

Solução técnica
Removida a chamada print(obj) logo antes do return obj em
BaseOrganization.create; nenhuma mudança de comportamento funcional.
Propósito
Formalizar organization/tests como pacote Python para abrigar os módulos
de teste (test_mixins.py, test_normaff.py, tests.py).

Solução técnica
Arquivo __init__.py criado em organization/tests/.
Propósito
Centralizar fixtures/helpers reutilizados pelos testes de organization
(ex.: criação de Organization/BaseOrganization com Location associada),
reaproveitando os mixins de location/tests/test_mixins.py.

Solução técnica
Definição de classes/mixins de TestCase com setup reutilizável para os
modelos de organization.
…tests.py

Propósito
Corrigir imports relativos (.exceptions, .models, .tasks) que quebram
dependendo de como o módulo de teste é descoberto/executado, trocando
para imports absolutos a partir de organization, e corrigir fixtures que
usavam acronym='Acronym of institution' (22 caracteres), valor que
ultrapassa o max_length=20 do campo acronym.

Solução técnica
- from .exceptions/.models/.tasks import ... substituído por
  from organization.exceptions/organization.models/organization.tasks
  import ... em OrganizationTest e OrganizationTaskTest.
- Todas as ocorrências de acronym='Acronym of institution' (em
  InstitutionIdentification.objects.create, nas asserções de
  self.organization.acronym e nos dicts institution_data passados a
  task_migrate_date_institution_to_organization_publisher) substituídas
  por acronym='INSTITUTIONACRON' (16 caracteres, dentro do limite).
Propósito
Sinalizar explicitamente que o teste de constraint unique_together em
NormAffiliation está desalinhado com o model atual, evitando falso
negativo silencioso enquanto o ajuste no model/migration não é feito.

Solução técnica
Import de unittest adicionado; decorator @unittest.skip aplicado a
test_unique_together_constraint com mensagem explicando o motivo: o model
NormAffiliation não possui unique_together configurado, sendo necessário
ajustar o model e a migration correspondente antes de reativar o teste.
@robertatakenaka
robertatakenaka merged commit 94b6bc1 into scieloorg:main Jul 22, 2026
3 of 5 checks passed
@robertatakenaka robertatakenaka mentioned this pull request Jul 22, 2026
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant