tests/testthat/test-filter_results.R

context("filter_results")

conn <- nfi_connect()

test_that("vars_in_PLOTS helper works", {
  expect_length(
    tidyNFI:::vars_in_PLOTS(c('genus_id', 'basal_area', 'admin_province'), conn),
    1
  )
  expect_length(
    tidyNFI:::vars_in_PLOTS(c('genus_id', 'basal_area'), conn),
    0
  )
  expect_length(
    tidyNFI:::vars_in_PLOTS(
      c('genus_id', 'basal_area', 'admin_province', 'feat_sampling_year'), conn
    ),
    1
  )
})

test_that("vars_in_PLOTS_DYNAMIC helper works", {
  expect_length(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(
      c('genus_id', 'basal_area', 'feat_sampling_year'), 'NFI_3', conn
    ),
    1
  )
  expect_length(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(c('genus_id', 'basal_area'), 'NFI_3', conn),
    0
  )
  expect_length(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(
      c('genus_id', 'basal_area', 'admin_province', 'feat_sampling_year'),
      'NFI_3', conn
    ),
    1
  )
  expect_length(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(
      c('genus_id', 'basal_area', 'feat_sampling_year'), 'COMP_NFI3_NFI4', conn
    ),
    0
  )
  expect_warning(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(
      c('genus_id', 'basal_area', 'feat_sampling_year'), 'COMP_NFI3_NFI4', conn
    ),
    "Comparision tables can not be filtered by variables from nfi dynamic info tables"
  )

  expect_length(
    tidyNFI:::vars_in_PLOTS_DYNAMIC(
      c('genus_id', 'basal_area', 'admin_province', 'feat_sampling_year'),
      'SHRUB_NFI_3_INFO', conn
    ),
    1
  )
})

test_that("vars_in_nfi_data works", {
  nfi_data_collected <- nfi_results_data(conn, 'nfi_4', 'genus', FALSE, TRUE)
  nfi_data_nocollected <- nfi_results_data(conn, 'nfi_4', 'genus', FALSE, FALSE)

  expect_length(
    tidyNFI:::vars_in_nfi_data(
      c('genus_id', 'basal_area', 'feat_sampling_year'), nfi_data_collected
    ),
    2
  )
  expect_length(
    tidyNFI:::vars_in_nfi_data(c('feat_sampling_year'), nfi_data_collected),
    0
  )
  expect_length(
    tidyNFI:::vars_in_nfi_data(
      c('genus_id', 'basal_area', 'feat_sampling_year'), nfi_data_nocollected
    ),
    2
  )
  expect_length(
    tidyNFI:::vars_in_nfi_data(c('feat_sampling_year'), nfi_data_nocollected),
    0
  )
})

test_that("filter collected works", {
  nfi_data_collected <- nfi_results_data(conn, 'nfi_4', 'genus', FALSE, TRUE)

  expect_s3_class(
    nfi_results_filter(
      nfi_data_collected,
      variables = c('genus_id', 'basal_area', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', basal_area > 15, admin_province == 'Barcelona',
      .collect = TRUE
    ),
    'tbl_df'
  )
  expect_s3_class(
    nfi_results_filter(
      nfi_data_collected,
      variables = c('genus_id', 'basal_area', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', basal_area > 15, admin_province == 'Barcelona',
      .collect = FALSE
    ),
    'tbl_df'
  )
  expect_warning(
    nfi_results_filter(
      nfi_data_collected,
      variables = c('genus_id', 'basal_area', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', basal_area > 15, admin_province == 'Barcelona',
      .collect = FALSE
    ),
    '.collect set to FALSE, but nfi_data already collected. Returning collected filter results'
  )
})

test_that("filter no collected works", {
  nfi_data_nocollected <- nfi_results_data(conn, 'nfi_4', 'genus', FALSE, FALSE)

  expect_s3_class(
    nfi_results_filter(
      nfi_data_nocollected,
      variables = c('genus_id', 'basal_area', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', basal_area > 15, admin_province == 'Barcelona',
      .collect = TRUE
    ),
    'tbl_df'
  )
  expect_s3_class(
    nfi_results_filter(
      nfi_data_nocollected,
      variables = c('genus_id', 'basal_area', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', basal_area > 15, admin_province == 'Barcelona',
      .collect = FALSE
    ),
    'tbl_sql'
  )
})

test_that("filter with comparision data works", {
  nfi_data_collected <- nfi_results_data(conn, 'nfi_3_nfi_4', 'genus', FALSE, TRUE)
  nfi_data_nocollected <- nfi_results_data(conn, 'nfi_2_nfi_3', 'genus', FALSE, FALSE)

  expect_s3_class(
    nfi_results_filter(
      nfi_data_collected,
      variables = c('genus_id', 'density_inc', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', density_inc > 15, admin_province == 'Barcelona',
    ),
    'tbl_df'
  )

  expect_s3_class(
    nfi_results_filter(
      nfi_data_nocollected,
      variables = c('genus_id', 'density_inc', 'admin_province'),
      conn = conn,
      genus_id == 'Pinus', density_inc > 15, admin_province == 'Barcelona',
      .collect = FALSE
    ),
    'tbl_sql'
  )

})

nfi_close(conn)
MalditoBarbudo/tidyNFI documentation built on Sept. 7, 2019, 9:11 a.m.