tests/testthat/test-properties.R

test_that("read docx properties", {
  doc <- read_docx(
    path = system.file(package = "officer", "doc_examples/example.docx")
  )
  properties <- doc_properties(doc)
  expect_equal(properties$value[properties$tag %in% "title"], "document title")
  expect_equal(
    properties$value[properties$tag %in% "subject"],
    "document subject"
  )
  expect_equal(properties$value[properties$tag %in% "creator"], "author")
  expect_equal(
    properties$value[properties$tag %in% "description"],
    "these are comments"
  )
  expect_equal(
    properties$value[properties$tag %in% "created"],
    "2017-04-26T13:10:00Z"
  )
})

test_that("read pptx properties", {
  doc <- read_pptx(
    path = system.file(package = "officer", "doc_examples/example.pptx")
  )
  properties <- doc_properties(doc)
  expect_equal(properties$value[properties$tag %in% "title"], "document title")
  expect_equal(
    properties$value[properties$tag %in% "subject"],
    "document subject"
  )
  expect_equal(properties$value[properties$tag %in% "creator"], "author")
  expect_equal(
    properties$value[properties$tag %in% "description"],
    "these are comments"
  )
  expect_equal(
    properties$value[properties$tag %in% "created"],
    "2017-04-27T11:29:40Z"
  )
})


test_that("set docx properties", {
  doc <- read_docx()
  time_now <- Sys.time()
  filename <- tempfile(fileext = ".docx")
  doc <- set_doc_properties(
    doc,
    title = "title",
    subject = "document subject",
    creator = "Me me me",
    description = "this document is not empty",
    created = time_now
  )
  dooc <- print(doc, target = filename)

  doc <- read_docx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "title"], "title")
  expect_equal(
    properties$value[properties$tag %in% "subject"],
    "document subject"
  )
  expect_equal(properties$value[properties$tag %in% "creator"], "Me me me")
  expect_equal(
    properties$value[properties$tag %in% "description"],
    "this document is not empty"
  )
  expect_equal(
    properties$value[properties$tag %in% "created"],
    format(time_now, "%Y-%m-%dT%H:%M:%SZ")
  )
})

test_that("set custom properties", {
  filename <- tempfile(fileext = ".docx")
  doc <- read_docx()
  doc <- set_doc_properties(doc, coco = "coucou", zozo = "zuzu")
  print(doc, target = filename)

  doc <- read_docx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "coco"], "coucou")
  expect_equal(properties$value[properties$tag %in% "zozo"], "zuzu")

  filename <- tempfile(fileext = ".pptx")
  doc <- read_pptx()
  doc <- set_doc_properties(doc, coco = "coucou", zozo = "zuzu")
  print(doc, target = filename)

  doc <- read_pptx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "coco"], "coucou")
  expect_equal(properties$value[properties$tag %in% "zozo"], "zuzu")

  doc <- read_docx()
  filename <- tempfile(fileext = ".docx")
  doc <- set_doc_properties(doc, values = list(coco = "coucou", zozo = "zuzu"))
  print(doc, target = filename)

  doc <- read_docx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "coco"], "coucou")
  expect_equal(properties$value[properties$tag %in% "zozo"], "zuzu")

  doc <- read_pptx()
  filename <- tempfile(fileext = ".pptx")
  doc <- set_doc_properties(doc, values = list(coco = "coucou", zozo = "zuzu"))
  print(doc, target = filename)

  doc <- read_pptx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "coco"], "coucou")
  expect_equal(properties$value[properties$tag %in% "zozo"], "zuzu")
})


test_that("set pptx properties", {
  doc <- read_pptx()
  time_now <- Sys.time()
  filename <- tempfile(fileext = ".pptx")
  doc <- set_doc_properties(
    doc,
    title = "title",
    subject = "document subject",
    creator = "Me me me",
    description = "this document is not empty",
    created = time_now
  )
  print(doc, target = filename)

  doc <- read_pptx(path = filename)
  properties <- doc_properties(doc)

  expect_equal(properties$value[properties$tag %in% "title"], "title")
  expect_equal(
    properties$value[properties$tag %in% "subject"],
    "document subject"
  )
  expect_equal(properties$value[properties$tag %in% "creator"], "Me me me")
  expect_equal(
    properties$value[properties$tag %in% "description"],
    "this document is not empty"
  )
  expect_equal(
    properties$value[properties$tag %in% "created"],
    format(time_now, "%Y-%m-%dT%H:%M:%SZ")
  )
})

Try the officer package in your browser

Any scripts or data that you put into this service are public.

officer documentation built on June 8, 2025, 1:57 p.m.