Nuevas especificaciones del sistema de funciones principales en plugins y temas

Hemos incluido lo que llamamos especificaciones de humo o especificaciones de características principales en ambos esqueletos para plugins y temas.

Estas especificaciones aseguran que el plugin o tema en el que estás trabajando no rompa la funcionalidad básica de Discourse.

Es fácil añadir estas especificaciones a un plugin o tema existente:

Para un 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 un 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

Si necesitas actualizar muchos repositorios a la vez, hay disponible un script para nuestra herramienta mass-pr.

Si el plugin o tema en el que estás trabajando cambia intencionadamente una funcionalidad básica de Discourse, entonces es posible omitir algunos de los ejemplos de las especificaciones de características principales:

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

Aquí está la lista completa de palabras clave para omitir ejemplos:

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

En mi humilde opinión, sería muy útil y beneficioso incluir este detalle en

y

… o el enlace de este tema :slight_smile:

Esa es una buena idea, se ha hecho en DEV: Add short explanations for the core features specs by Flink · Pull Request #52 · discourse/discourse-theme-skeleton · GitHub y DEV: Add short explanations for the core features specs by Flink · Pull Request #78 · discourse/discourse-plugin-skeleton · GitHub :grin:

Si tu tema necesita tener una Extensiones autorizadas del tema diferente, todas las pruebas fallarán porque el tema no puede cargar.

Recientemente me encontré con este problema. Así es como se pueden configurar las extensiones requeridas:

RSpec.describe "Core features" do
+ SiteSetting.theme_authorized_extensions = "js|css"
  before { upload_theme_or_component }

  it_behaves_like "having working core features"
end

Eso no es difícil. Me pregunto en qué tema estaba trabajando o si ¡resolví el problema! :person_shrugging: