플러그인과 테마에 새로운 핵심 기능 시스템 사양

현재 플러그인과 테마의 두 가지 스켈레톤 모두에 우리가 ‘스모크 스펙(smoke specs)’ 또는 '핵심 기능 스펙(core features specs)'이라 부르는 내용을 추가했습니다.

이 스펙들은 작업 중인 플러그인이나 테마가 Discourse의 기본 기능을 깨뜨리지 않도록 보장합니다.

기존 플러그인이나 테마에 이 스펙을 추가하는 것은 매우 쉽습니다:

플러그인용

# 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

테마용

# 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

여러 저장소를 한 번에 업데이트해야 하는 경우, mass-pr 도구를 위한 스크립트를 사용할 수 있습니다.

작업 중인 플러그인이나 테마가 의도적으로 Discourse의 기본 기능을 변경하는 경우, 핵심 기능 스펙의 일부 예제를 건너뛸 수 있습니다:

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

예제를 건너뛰기 위한 전체 키워드 목록은 다음과 같습니다:

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

개인적으로, 이 세부 사항을 아래 위치에 포함하는 것이 매우 유용하고 도움이 될 것 같습니다.

그리고

… 또는 이 토픽의 링크를 포함하는 것도 좋습니다 :slight_smile:

좋은 아이디어네요. DEV: Add short explanations for the core features specs - Pull Request #52%EC%99%80 - discourse/discourse-theme-skeleton - GitHub DEV: Add short explanations for the core features specs - Pull Request #78%EC%97%90%EC%84%9C - discourse/discourse-plugin-skeleton - GitHub 이미 적용된 적이 있습니다 :grin:

테마에 다른 Theme authorized extensions가 필요한 경우, 테마를 로드할 수 없어 모든 테스트가 실패합니다.

최근 이 문제를 우연히 발견했습니다. 필요한 확장 기능이 어떻게 설정되는지 아래에 공유합니다:

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

  it_behaves_like "having working core features"
end

그건 어렵지 않아요. 내가 어떤 테마로 작업 중이었는지, 아니면 문제를 해결했는지가 궁금하네요! :person_shrugging: