# Train objects are large so create on the fly
# test_that("train + butcher_example() works", {
#   example_files <- butcher_example()
#   expect_true("train.recipe.rda" %in% example_files)
#   expect_true(file.exists(butcher_example("train.recipe.rda")))
# })

test_that("train + predict() works", {
  skip_on_cran()
  skip_if_not_installed("caret")
  skip_if_not_installed("recipes")
  # Load
  suppressPackageStartupMessages(library(recipes))
  suppressPackageStartupMessages(library(caret))
  suppressPackageStartupMessages(library(modeldata))
  # Data
  data(biomass)
  biomass_tr <- biomass[biomass$dataset == "Training",]
  biomass_te <- biomass[biomass$dataset == "Testing",]
  recipe <- biomass %>%
    recipe(HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur) %>%
    step_center(all_predictors()) %>%
    step_scale(all_predictors()) %>%
    step_spatialsign(all_predictors())
  # Model
  train.recipe_fit <- train(recipe, biomass_tr, method = "svmRadial", metric = "RMSE")
  # Butcher
  x <- butcher(train.recipe_fit)
  # Testing data
  expect_equal(x$call, rlang::expr(dummy_call()))
  expect_equal(x$dots, list(NULL))
  expect_equal(x$control, list(NULL))
  expect_equal(x$trainingData, data.frame(NA))
  expect_identical(attr(x$recipe$steps[[1]]$terms[[1]], ".Environment"), rlang::base_env())
  expect_equal(x$pred, list(NULL))
  expected_output <- predict(train.recipe_fit, newdata = biomass_te)
  expect_equal(predict(x, biomass_te), expected_output)
})
