tests/testthat/test-55-modify-note.R

test_that('NOTE(X) is modified', {
  x <-
    'BEXSTA' %>%
    get_data_path() %>%
    readRDS() %>%
    px()

  expect_identical(px_note(x), NULL)
  expect_identical(px_notex(x),NULL)

  x2 <- px_note(x, value = "Note for entire table")
  expect_error(px_note(x, value = 4), regex = "wrong format")

  expect_identical(px_note(x2), "Note for entire table")
  expect_true(all(is.na(x2$variables2$note)))

  x_lang <- px_languages(x, c('da', 'kl'))

  expect_error(px_note(x_lang, value = c(4, 5)), regex = "wrong format")

  expect_identical(px_note(x_lang), NULL)

  dk_note_df <- dplyr::tibble(language = "da",
                              value = "En dansk note"
                              )

  x_lang2 <- px_note(x_lang, value = dk_note_df)
  expect_error(px_note(x_lang, value = data.frame(language = "da")),
                    regex = "wrong format"
               )

  expect_identical(px_note(x_lang2), dk_note_df)

  entire_table_note <- "Same note for da and kl"
  x_lang3 <- px_note(x_lang2, value = entire_table_note)

  same_note_df <- dplyr::tibble(language = c("da", "kl"),
                                value = entire_table_note
                                )

  expect_identical(px_note(x_lang3), same_note_df)

  expect_error(px_note(x, value = dplyr::tibble(language = "da",
                                             value = "A variable note",
                                             wrong_name = "invalid"
                                             )
                    ),
               regex = "invalid columns: wrong_name"
               )

  variable_note_df <- dplyr::tibble(`variable-code` = "gender",
                                    note = "A variable note"
                                    )

  x3 <- px_note(x, value = variable_note_df)

  expect_error(px_note(x, value = dplyr::tibble(`variable-code` = "gender",
                                             note = "A variable note",
                                             wrong_name = "invalid"
                                             )
                    ),
               regex = "invalid columns: wrong_name"
               )

  expect_identical(px_note(x3), variable_note_df)


  variable_note_lang_df <- dplyr::tibble(`variable-code` = "gender",
                                         language = c("da", "kl"),
                                         note = c("danish note",
                                                  "kalaallisut note"
                                                  )
                                         )

  x_lang4 <- px_note(x_lang, value = variable_note_lang_df)

  expect_identical(px_note(x_lang4), variable_note_lang_df)

  x_lang5 <-
    x_lang %>%
    px_note(value = entire_table_note) %>%
    px_note(value = variable_note_lang_df)

  expect_identical(px_note(x_lang5), list(same_note_df,
                                       variable_note_lang_df
                                       )
                   )

  x_lang6 <- px_note(x_lang, NULL)

  expect_identical(px_note(x_lang6), NULL)

  x_lang7 <- px_note(x_lang, value = list(variable_note_lang_df,
                                       same_note_df
                                       )
                  )

  expect_identical(px_note(x_lang7), list(same_note_df,
                                       variable_note_lang_df
                                       )
                   )

  expect_error(px_note(x_lang, value = list(c(1),
                                         variable_note_lang_df
                                         )
                    ),
               regex = "wrong format"
               )
})

Try the pxmake package in your browser

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

pxmake documentation built on April 11, 2025, 6:06 p.m.