core.typ 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #import "/.template/lib/domain/document.typ": render-options, document-profile, validate-profile-contract
  2. #import "/.template/lib/domain/attachments.typ": attachment, attachment-set
  3. #import "/.template/lib/domain/references.typ": bibliography-section, validate-bibliographies
  4. #import "/.template/lib/infrastructure/company-assets.typ": load-company, available-companies
  5. #import "/.template/lib/infrastructure/employees.typ": employee-directory, empty-private-settings, private-company-media, report-executor
  6. #let passthrough(body, ctx) = body
  7. #let run() = {
  8. let options = render-options()
  9. assert.eq(options.mode, "final")
  10. assert.eq(options.at("media-policy"), "placeholder")
  11. let profile = document-profile("unit", passthrough)
  12. assert.eq(validate-profile-contract(profile).id, "unit")
  13. assert.eq(available-companies().len(), 4)
  14. for id in available-companies() {
  15. let loaded = load-company(id)
  16. assert.eq(loaded.kind, "company-profile")
  17. assert(type(loaded.legal.name) == str)
  18. }
  19. let company = load-company("test-company")
  20. assert.eq(company.legal.name, "ООО «Тестовая компания»")
  21. assert.eq(type(company.resources.logo), path)
  22. assert.eq(employee-directory.len(), 9)
  23. let unsigned = report-executor("fedorov")
  24. assert.eq(unsigned.at(1), "Федоров Д.А.")
  25. assert.eq(unsigned.at(2), none)
  26. let private-settings = (
  27. companies: (scientia: (signature: true, stamp: false)),
  28. signatures: (
  29. musikhin: (enabled: true, offset: 1.25cm),
  30. fedorov: (enabled: false, offset: 0.7cm),
  31. ),
  32. )
  33. let signed = report-executor(
  34. "musikhin",
  35. role: "Управляющий директор",
  36. private-settings: private-settings,
  37. )
  38. assert.eq(signed.at(0), "Управляющий директор")
  39. assert.eq(type(signed.at(2)), path)
  40. assert.eq(signed.at(3), 1.25cm)
  41. assert.eq(report-executor("fedorov", private-settings: private-settings).at(2), none)
  42. let media = private-company-media(private-settings, "scientia")
  43. assert.eq(type(media.signature), path)
  44. assert.eq(media.stamp, none)
  45. assert.eq(private-company-media(empty-private-settings, "scientia").signature, none)
  46. let item = attachment("a", "Приложение", [Текст])
  47. let items = attachment-set(items: (item,), numbering: "cyrillic")
  48. assert.eq(items.items.len(), 1)
  49. let bibliography = bibliography-section("main", path("/assets/references.bib"))
  50. assert.eq(validate-bibliographies((bibliography,)).len(), 1)
  51. assert.eq(bibliography.at("page-break"), true)
  52. let compact-bibliography = bibliography-section(
  53. "compact",
  54. path("/assets/references.bib"),
  55. page_break: false,
  56. )
  57. assert.eq(compact-bibliography.at("page-break"), false)
  58. "ok"
  59. }