Especificações do sistema de novas funcionalidades principais em plugins e temas

Acabamos de incluir o que chamamos de especificações de fumaça ou especificações de funcionalidades principais em ambos os esqueletos para plugins e temas.

Essas especificações garantem que o plugin ou tema em que você está trabalhando não quebre a funcionalidade básica do Discourse.

É fácil adicionar essas especificações a um plugin ou tema existente:

Para um plugin

# spec/system/core_features_spec.rb

RSpec.describe "Core features", type: :system do
  before { enable_current_plugin }

  it_behaves_like "having working core features"
end

Para um tema

# spec/system/core_features_spec.rb

RSpec.describe "Core features", type: :system do
  before { upload_theme_or_component }

  it_behaves_like "having working core features"
end

Se você precisar atualizar vários repositórios de uma vez, um script para nossa ferramenta mass-pr está disponível.

Se o plugin ou tema em que você está trabalhando altera uma funcionalidade básica do Discourse propositalmente, então é possível pular alguns dos exemplos das especificações de funcionalidades principais:

it_behaves_like "having working core features", skip_examples: %i[login likes]

Aqui está a lista completa de palavras-chave para pular exemplos:

  • login
  • likes
  • profile
  • topics
  • topics:read
  • topics:reply
  • topics:create
  • search
  • search:quick_search
  • search:full_page
10 curtidas

IMHO, seria muito útil e prestativo incluir este detalhe em

e

… ou o link deste tópico :slight_smile:

2 curtidas

Essa é uma boa ideia, já foi feito em DEV: Add short explanations for the core features specs by Flink · Pull Request #52 · discourse/discourse-theme-skeleton · GitHub e DEV: Add short explanations for the core features specs by Flink · Pull Request #78 · discourse/discourse-plugin-skeleton · GitHub :grin:

1 curtida

Se o seu tema precisar ter uma Extensões autorizadas do tema diferente, todos os testes falharão porque o tema não consegue carregar.