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 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:
Recentemente deparei-me com este problema. Eis como as extensões necessárias podem ser definidas:
RSpec.describe "Core features" do
+ SiteSetting.theme_authorized_extensions = "js|css"
before { upload_theme_or_component }
it_behaves_like "having working core features"
end