local_edition(3)

test_that("adapt_md_variant() adds extensions to markdown variants", {
  expect_identical(adapt_md_variant("markdown"), "markdown-yaml_metadata_block-pandoc_title_block")
  expect_identical(adapt_md_variant("markdown_phpextra"), "markdown_phpextra-yaml_metadata_block")
  expect_identical(adapt_md_variant("markdown_mmd"), "markdown_mmd-yaml_metadata_block-mmd_title_block")
  expect_identical(adapt_md_variant("markdown_strict"), "markdown_strict-yaml_metadata_block")
  expect_identical(adapt_md_variant("markdown_github"), "markdown_github-yaml_metadata_block")
  expect_identical(adapt_md_variant("markdown-yaml_metadata_block"), "markdown-yaml_metadata_block")
})

test_that("adapt_md_variant() ignored unknown variants", {
  expect_identical(adapt_md_variant("markdown_new"), "markdown_new")
  expect_identical(adapt_md_variant("markdown_new"), "markdown_new")
})

test_that("adapt_md_variant() with special variants (pandoc >= 2.13)", {
  skip_if_not_pandoc('2.13')
  expect_identical(adapt_md_variant("commonmark"), "commonmark-yaml_metadata_block")
  expect_identical(adapt_md_variant("gfm"), "gfm-yaml_metadata_block")
  expect_identical(adapt_md_variant("commonmark"), "commonmark-yaml_metadata_block")
  expect_identical(adapt_md_variant("gfm+yaml_metadata_block"), "gfm+yaml_metadata_block")
  expect_identical(adapt_md_variant("gfm-yaml_metadata_block"), "gfm-yaml_metadata_block")
})

test_that("adapt_md_variant() with special variants (pandoc < 2.13)", {
  skip_if_pandoc('2.13')
  expect_identical(adapt_md_variant("commonmark"), "commonmark")
  expect_identical(adapt_md_variant("gfm"), "gfm")
  expect_identical(adapt_md_variant("commonmark_x"), "commonmark_x")
})

test_that("md_document() can preserve yaml", {
  skip_on_cran() # avoid pandoc issue on CRAN
  expect_snapshot_md <- function(variant, preserve_yaml) {
    rmd <- local_rmd_file(c("---", "title: test", "---", "", "content"))
    res <- render(rmd, md_document(variant, preserve_yaml = preserve_yaml), quiet = TRUE)
    expect_snapshot_file(res, sprintf("yaml-block-%s%s.md", variant, if (preserve_yaml) "-meta" else ""))
  }
  expect_snapshot_md("markdown", preserve_yaml = FALSE)
  expect_snapshot_md("markdown_phpextra", preserve_yaml = FALSE)
  expect_snapshot_md("markdown_mmd", preserve_yaml = FALSE)
  expect_snapshot_md("markdown_strict", preserve_yaml = FALSE)
  expect_snapshot_md("markdown_github", preserve_yaml = FALSE)
  expect_snapshot_md("markdown", preserve_yaml = TRUE)
  expect_snapshot_md("markdown_phpextra", preserve_yaml = TRUE)
  expect_snapshot_md("markdown_mmd", preserve_yaml = TRUE)
  expect_snapshot_md("markdown_strict", preserve_yaml = TRUE)
  expect_snapshot_md("markdown_github", preserve_yaml = TRUE)
})

