Skip to content

Fix media/inline-media validation tests, add missing mime-subtypes, fix validation_type typo#1131

Draft
Copilot wants to merge 2 commits intomasterfrom
copilot/create-validations-media-elements
Draft

Fix media/inline-media validation tests, add missing mime-subtypes, fix validation_type typo#1131
Copilot wants to merge 2 commits intomasterfrom
copilot/create-validations-media-elements

Conversation

Copy link
Contributor

Copilot AI commented Mar 13, 2026

O que esse PR faz?

Corrige testes quebrados para validação de <media> e <inline-media>, adiciona mime-subtypes faltantes (docx, pptx) e corrige um typo no código de validação.

Bugs corrigidos nos testes:

  • MediaValidation(node, data, params)MediaValidation(data, params) — construtor aceita 2 args, não 3
  • xml_media.data()xml_media.datadata é @property, não método
  • validate_mime_type() / validate_mime_subtype()validate_mime_type_and_subtype() — métodos inexistentes substituídos pelo método real
  • Estrutura XML dos testes de modelo precisava de elementos body/sec para o XPath *[name()!='supplementary-material']/media funcionar

Correções no código de produção:

  • "value in lis""value in list" em media.py
  • Adicionados docx e pptx em valid_extension e mime_types_and_subtypes no visual_resource_base_rules.json (SPS 1.10)

Onde a revisão poderia começar?

tests/sps/validation/test_media.py — reescrito para usar a API correta do VisualResourceBaseValidation.

Como este poderia ser testado manualmente?

python -m pytest tests/sps/validation/test_media.py tests/sps/models/test_media.py tests/sps/validation/test_visual_resource_base.py -v

Todos os 23 testes devem passar.

Algum cenário de contexto que queira dar?

Os testes foram escritos contra uma API que não correspondia à implementação real. O VisualResourceBaseValidation.__init__ aceita (data, params), mas os testes passavam (node, data, params). Métodos como validate_mime_type() nunca existiram — o método real é validate_mime_type_and_subtype(). O modelo XmlVisualResource.data é uma @property geradora, não um método chamável.

Screenshots

N/A

Quais são tickets relevantes?

Referências

  • tests/sps/validation/test_visual_resource_base.py — padrão de teste de referência para validadores de recursos visuais
  • packtools/sps/validation/visual_resource_base.py — classe base que define a API real
Original prompt

This section details on the original issue you should resolve

<issue_title>Criar validações para os elementos e </issue_title>
<issue_description>## Objetivo

Implementar validações para os elementos <media> e <inline-media> conforme a especificação SPS 1.10, aumentando a conformidade de X% para 70% (7 de 10 regras).

Nota: Algumas validações para <media> e <inline-media> podem já estar parcialmente implementadas no repositório. Este Issue visa reavaliar, complementar e garantir cobertura completa das regras SPS 1.10.


Contexto

Os elementos <media> e <inline-media> referenciam arquivos externos de objetos multimídia (vídeos, áudios, documentos, planilhas, etc.), exceto figuras estáticas. Validações corretas garantem que atributos obrigatórios estejam presentes, que combinações de mime-type/mime-subtype sejam válidas, e que boas práticas de acessibilidade sejam seguidas.

Conformidade atual: X de 10 regras implementadas (X%)
Meta após implementação: 7 de 10 regras (70%)


Documentação SPS

Referência oficial: https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.media

Regras principais conforme SPS 1.10:

  1. Atributos obrigatórios (ambos elementos):

    • @id (obrigatório)
    • @mime-type (obrigatório)
    • @mime-subtype (obrigatório)
    • @xlink:href (obrigatório)
  2. Valores comuns para @mime-type:

    • application - Planilhas Excel, documentos Word, apresentações PowerPoint, PDFs, arquivos compactados
    • video - Vídeos
    • audio - Áudios
  3. Extensões obrigatórias para @mime-subtype:

    • Vídeo: mp4
    • Áudio: mp3
    • Arquivos compactados: zip
    • Outros formatos: consultar IANA Media Types
  4. Formato do @xlink:href:

    • Nome completo do arquivo (nome + extensão)
    • Arquivo deve estar no pacote do documento
  5. Consistência mime-type e mime-subtype:

    • video + mp4
    • audio + mp3
    • application + zip, pdf, xlsx, docx, pptx, etc.
  6. Acessibilidade (recomendado):

    • Vídeos e áudios devem ter <alt-text> e/ou <long-desc>
    • Transcrição do conteúdo em <sec sec-type="transcript">
    • Referência cruzada para transcrição usando <xref ref-type="sec">
  7. Restrições de uso:

    • Não usar <media> ou <inline-media> para figuras e imagens estáticas (usar <graphic> e <inline-graphic>)

Regras a Implementar

P0 – Críticas (implementar obrigatoriamente)

# Regra Nível Descrição
1 Validar presença de @id CRITICAL O atributo @id é obrigatório em <media> e <inline-media>
2 Validar presença de @mime-type CRITICAL O atributo @mime-type é obrigatório em <media> e <inline-media>
3 Validar presença de @mime-subtype CRITICAL O atributo @mime-subtype é obrigatório em <media> e <inline-media>
4 Validar presença de @xlink:href CRITICAL O atributo @xlink:href é obrigatório em <media> e <inline-media>
5 Validar consistência mime-type e mime-subtype ERROR Combinação de @mime-type e @mime-subtype deve ser válida (ex: video/mp4, audio/mp3, application/pdf)
6 Validar extensões obrigatórias ERROR Para vídeo: mp4; para áudio: mp3; para compactado: zip

P1 – Importantes (implementar se possível)

# Regra Nível Descrição
7 Validar presença de acessibilidade para vídeo/áudio WARNING Vídeos e áudios devem ter <alt-text> ou <long-desc> como elementos filhos
8 Recomendar transcrição para vídeo/áudio INFO Vídeos e áudios devem ter referência para <sec sec-type="transcript">

P2 – Futuras (fora do escopo deste Issue)

# Regra Motivo de exclusão
9 Validar que arquivo existe no pacote Alta complexidade - requer acesso ao sistema de arquivos
10 Validar contra lista completa IANA Media Types Média complexidade - requer manutenção de lista externa grande

Arquivos a Criar/Modificar

Avaliar existentes (podem ter validações parciais):

  • packtools/sps/models/media.py ou similar – Verificar se modelo existe
  • packtools/sps/validation/media.py – Verificar validações existentes
  • packtools/sps/validation/rules/media_rules.json ou similar – Verificar configuração

Criar (se não existirem):

  • packtools/sps/models/media.py – Modelo de extração de dados
  • packtools/sps/validation/media.py – Validações
  • packtools/sps/validation/rules/media_rules.json – Configuração de níveis de erro
  • tests/sps/validation/test_media.py – Testes unitários

Referenciar (implementações similares):

  • packtools/sps/validation/graphic.py – Validação de atributos obrigatórios similar
  • packtools/sps/validation/utils.py – Funções auxiliares (build_response)

Exemplos de XML

XML Válido (deve passa...


📱 Kick off Copilot coding agent tasks wherever you are with GitHub Mobile, available on iOS and Android.

…x validation_type typo

Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Copilot AI changed the title [WIP] Implement validations for media and inline-media elements Fix media/inline-media validation tests, add missing mime-subtypes, fix validation_type typo Mar 13, 2026
Copilot AI requested a review from robertatakenaka March 13, 2026 14:30
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.

Criar validações para os elementos <media> e <inline-media>

2 participants