tests/testthat/test-realtime-webservice.R

test_that("realtime_ws returns the correct data header", {
  skip_on_cran()

  ws_test <- realtime_ws(
    station_number = "08MF005",
    parameters = c(46), ## Water level
    start_date = Sys.Date(),
    end_date = Sys.Date()
  )

  expect_identical(
    colnames(ws_test),
    c(
      "STATION_NUMBER",
      "Date",
      "Name_En",
      "Value",
      "Unit",
      "Grade",
      "Symbol",
      "Approval",
      "Parameter",
      "Code",
      "Qualifier",
      "Qualifiers"
    )
  )

  ## Turned #42 into a test
  expect_true(is.numeric(ws_test$Value))
})


test_that("realtime_ws fails with incorrectly specified date", {
  skip_on_cran()

  expect_error(realtime_ws(
    station_number = "08MF005",
    parameters = 46,
    start_date = "01-01-2017 00:00:00"
  ))
  expect_error(realtime_ws(
    station_number = "08MF005",
    parameters = 46,
    end_date = "01-01-2017 00:00:00"
  ))
})

test_that("realtime_ws succeed specifying only date; no time", {
  skip_on_cran()

  today <- as.Date(as.POSIXct(Sys.time(), tz = "UTC"))
  sdate <- today - 1
  edate <- today

  output <- realtime_ws(
    station_number = "08MF005",
    parameters = 46,
    start_date = sdate,
    end_date = edate
  )

  expect_equal(as.Date(max(output$Date)), edate)
  expect_equal(as.Date(min(output$Date)), sdate)
})

test_that("realtime_ws succeed specifying  time", {
  skip_on_cran()

  stime <- as.POSIXlt(Sys.time() - 1E5, tz = "UTC")
  etime <- as.POSIXlt(Sys.time(), tz = "UTC")

  output <- realtime_ws(
    station_number = "08MF005",
    parameters = 46,
    start_date = stime,
    end_date = etime
  )

  expect_true(max(output$Date) <= etime)
  expect_true(min(output$Date) >= stime)
})

Try the tidyhydat package in your browser

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

tidyhydat documentation built on April 3, 2025, 5:51 p.m.