tests/testthat/test_getDailyOHLCV.R

context("Test getDailyOHLCV")

# Test Sharadar
test_that("sharadar function returns correct data for AAPL.", {

  dbcon_str   <- settings$sharadar.sqli
  symbol      <- "AAPL"
  start_date  <- as.Date("2018-01-02")
  end_date    <- as.Date("2018-10-30")
  columns     <- c("open", "high", "low", "close", "volume",
                   "adj.open", "adj.high", "adj.low", "adj.close", "adj.volume",
                   "dividend", "lastupdated")
  keep_symbol <- TRUE

  data <- getDailyOHLCVSharadar(dbcon_str, symbol, start_date, end_date,
                                columns, keep_symbol)

  expect_equal(data[1]$date, start_date)
  expect_equal(data[nrow(data)]$date, end_date)
  expect_equal(data[date == end_date]$open, 211.15)
  expect_equal(data[date == end_date]$high, 215.18)
  expect_equal(data[date == end_date]$low, 209.27)
  expect_equal(data[date == end_date]$close, 213.30)
  expect_equal(nrow(data), 210)
  expect_equal(ncol(data), 14)
  expect_equal(names(data),c ("symbol", "date", columns))
  expect_is(data, "data.table")
  expect_is(data$date, "Date")
  expect_is(data$lastupdated, "Date")
})

test_that("sharadar function check inputs correctly.", {

  dbcon_str <- settings$sharadar.sqli

  expect_error(getDailyOHLCVSharadar(dbcon_str, start_date = "hoge"),
               "character string is not in a standard unambiguous format")

  expect_error(getDailyOHLCVSharadar(dbcon_str, end_date = "fuga"),
               "character string is not in a standard unambiguous format")

  expect_error(getDailyOHLCVSharadar(dbcon_str, columns = "hoge"),
               "hoge is not supported column.")

  # expect_error(getDailyOHLCVSharadar(dbcon.str, symbol = "HOGE",
  #                                    start.date = "2008-01-02",
  #                                    end.date = "2018-10-31"),
  #                "*No data found for HOGE. (2008-01-02 - 2018-10-31)*")
})

# Test QuoteMedia
test_that("quotemedia function returns correct data for AAPL.", {

  dbcon_str   <- settings$quotemedia.sqli
  symbol      <- "AAPL"
  start_date  <- as.Date("2018-01-02")
  end_date    <- as.Date("2018-10-30")
  columns     <- c("open", "high", "low", "close", "volume", "dividend",
                   "split", "adj.open", "adj.high", "adj.low", "adj.close",
                   "adj.volume")
  keep_symbol <- TRUE

  data <- getDailyOHLCVQuoteMedia(dbcon_str, symbol, start_date, end_date,
                                  columns, keep_symbol)

  expect_equal(data[1]$date, start_date)
  expect_equal(data[nrow(data)]$date, end_date)
  expect_equal(data[date == end_date]$open, 211.15)
  expect_equal(data[date == end_date]$high, 215.18)
  expect_equal(data[date == end_date]$low, 209.27)
  expect_equal(data[date == end_date]$close, 213.30)
  expect_equal(data[date == end_date]$volume, 36659990)
  expect_equal(data[date == end_date]$dividend, 0)
  expect_equal(data[date == end_date]$split, 1)
  expect_equal(nrow(data), 210)
  expect_equal(ncol(data), 14)
  expect_equal(names(data), c("symbol", "date", columns))
  expect_is(data, "data.table")
  expect_is(data$date, "Date")
})

test_that("quotemedia function check inputs correctly.", {

  dbcon_str <- settings$quotemedia.sqli

  expect_error(getDailyOHLCVQuoteMedia(dbcon_str, start_date = "hoge"),
               "character string is not in a standard unambiguous format")

  expect_error(getDailyOHLCVQuoteMedia(dbcon_str, end_date = "fuga"),
               "character string is not in a standard unambiguous format")

  expect_error(getDailyOHLCVQuoteMedia(dbcon_str, columns = "hoge"),
               "hoge is not supported column.")

  # expect_error(getDailyOHLCVQuoteMedia(dbcon.str, symbol = "HOGE",
  #                                      start.date = "2008-01-02",
  #                                      end.date = "2018-10-31"),
  #                "*No data found for HOGE. (2008-01-02 - 2018-10-31)*")
})

# Test generic function
test_that("generic function returns correct data for AAPL.", {

  symbol      <- "AAPL"
  start_date  <- as.Date("2018-01-02")
  end_date    <- as.Date("2018-10-30")
  columns     <- c("open", "high", "low", "close")
  keep_symbol <- TRUE

  # Test both Sharadar and QuoteMedia
  for (dbcon_str in c(settings$sharadar.sqli, settings$quotemedia.sqli)) {

    data <- getDailyOHLCV(dbcon_str, symbol, start_date, end_date,
                          columns, keep_symbol)

    expect_equal(data[1]$date, start_date)
    expect_equal(data[nrow(data)]$date, end_date)
    expect_equal(data[date == end_date]$open, 211.15)
    expect_equal(data[date == end_date]$high, 215.18)
    expect_equal(data[date == end_date]$low, 209.27)
    expect_equal(data[date == end_date]$close, 213.30)
    expect_equal(nrow(data), 210)
    expect_equal(ncol(data), 6)
    expect_equal(names(data), c("symbol", "date", columns))
    expect_is(data, "data.table")
    expect_is(data$date, "Date")
  }
})

test_that("generic function check inputs correctly.", {

  # Test both Sharadar and QuoteMedia
  for (dbcon_str in c(settings$sharadar.sqli, settings$quotemedia.sqli)) {

    expect_error(getDailyOHLCV(dbcon_str, start_date = "hoge"),
                 "character string is not in a standard unambiguous format")

    expect_error(getDailyOHLCV(dbcon_str, end_date = "fuga"),
                 "character string is not in a standard unambiguous format")

    expect_error(getDailyOHLCV(dbcon_str, columns = "hoge"),
                 "hoge is not supported column.")

    # expect_error(getDailyOHLCV(dbcon.str, symbol = "HOGE",
    #                            start.date = "2008-01-02",
    #                            end.date = "2018-10-31"),
    #                "*No data found for HOGE. (2008-01-02 - 2018-10-31)*")
  }
})
tmk-c/myrlib documentation built on May 29, 2019, 1:44 p.m.