create_mock_inmet_data <- function(cache_dir, year = 2020) {
  if (!dir.exists(cache_dir)) dir.create(cache_dir, recursive = TRUE)

  csv_lines <- c(
    "REGIAO:;S;",
    "UF:;RS;",
    "ESTACAO:;PORTO ALEGRE;",
    "CODIGO (WMO):;A801;",
    "LATITUDE:;-30,05;",
    "LONGITUDE:;-51,16;",
    "ALTITUDE:;46,97;",
    "DATA DE FUNDACAO:;2000-09-22;",
    "Data;Hora UTC;PRECIPITA TOTAL (mm);PRESSAO ESTACAO (mB);RADIACAO GLOBAL (KJ/m²);TEMP BULBO SECO (°C);UMIDADE HORARIA (%);VENTO VELOCIDADE (m/s);",
    "2020/09/25;0000 UTC;0,0;1015,8;-9999;14,7;92;1,3;",
    "2020/09/25;0100 UTC;0,0;1015,2;-9999;14,0;93;0,8;",
    "2020/09/26;0000 UTC;2,5;1010,1;1500;18,5;80;3,5;"
  )

  csv_name <- "INMET_S_RS_A801_PORTO_ALEGRE_01-01-2020_A_31-12-2020.CSV"
  csv_path <- file.path(tempdir(), csv_name)

  con <- file(csv_path, open = "w", encoding = "latin1")
  writeLines(csv_lines, con)
  close(con)

  zip_path <- file.path(cache_dir, paste0(year, ".zip"))
  old_wd <- setwd(tempdir())
  utils::zip(zipfile = zip_path, files = csv_name)
  setwd(old_wd)

  file.remove(csv_path)
  return(zip_path)
}

create_mock_inmet_bad_datetime <- function(cache_dir, year = 2020) {
  if (!dir.exists(cache_dir)) dir.create(cache_dir, recursive = TRUE)

  csv_lines <- c(
    "REGIAO:;S;",
    "UF:;RS;",
    "ESTACAO:;PORTO ALEGRE;",
    "CODIGO (WMO):;A801;",
    "LATITUDE:;-30,05;",
    "LONGITUDE:;-51,16;",
    "ALTITUDE:;46,97;",
    "DATA DE FUNDACAO:;2000-09-22;",
    "Data;Hora UTC;PRECIPITA TOTAL (mm);TEMP BULBO SECO (°C);",
    "25-09-2020;0000 UTC;0,0;14,7;",
    "INVALID;XXXX;0,0;14,0;"
  )

  csv_name <- "bad_datetime.CSV"
  csv_path <- file.path(tempdir(), csv_name)

  writeLines(csv_lines, csv_path)

  zip_path <- file.path(cache_dir, paste0(year, ".zip"))
  old_wd <- setwd(tempdir())
  utils::zip(zipfile = zip_path, files = csv_name)
  setwd(old_wd)

  file.remove(csv_path)
  zip_path
}

create_mock_inmet_allna <- function(cache_dir, year = 2020) {
  if (!dir.exists(cache_dir)) dir.create(cache_dir, recursive = TRUE)
  csv_lines <- c(
    "REGIAO:;S;",
    "UF:;RS;",
    "ESTACAO:;PORTO ALEGRE;",
    "CODIGO (WMO):;A801;",
    "LATITUDE:;-30,05;",
    "LONGITUDE:;-51,16;",
    "ALTITUDE:;46,97;",
    "DATA DE FUNDACAO:;2000-09-22;",
    "Data;Hora UTC;PRECIPITA TOTAL (mm);TEMP BULBO SECO (°C);",
    "2020/09/25;0000 UTC;;;",
    "2020/09/26;0000 UTC;;;"
  )
  csv_name <- "INMET_S_RS_A801_PORTO_ALEGRE_01-01-2020_A_31-12-2020.CSV"
  csv_path <- file.path(tempdir(), csv_name)
  con <- file(csv_path, open = "w", encoding = "latin1")
  writeLines(csv_lines, con)
  close(con)
  zip_path <- file.path(cache_dir, paste0(year, ".zip"))
  old_wd <- setwd(tempdir())
  utils::zip(zipfile = zip_path, files = csv_name)
  setwd(old_wd)
  file.remove(csv_path)
  zip_path
}
