tests/testthat/test-profile.R

library(stringr)
library(tableschema.r)
library(testthat)
library(foreach)
library(jsonlite)

context("profile")


test_that("table-schema is up-to-date", {
  # res = jsonlite::toJSON(jsonlite::fromJSON( system.file(stringr::str_interp("profiles/tableschema.json"), package = "tableschema.r")))
  
  res <- jsonlite::toJSON(jsonlite::fromJSON('https://specs.frictionlessdata.io/schemas/table-schema.json',simplifyVector = TRUE))
  profile <- Profile.load('tableschema')

  expect_equal(class(profile$jsonschema),"json")
  expect_equal(profile$name, "table-schema")
  expect_type(res,"character")
  expect_type(profile$jsonschema,"character")
  expect_true(profile$validate(readLines('inst/extdata/schema.json'))$valid)
  expect_true(profile$validate('{"fields": [{"name": "year", "format": "%Y", "type": "date"}]}')$valid)
  expect_false(profile$validate('{
  "fields": [{"name": "name"}],
  "primaryKey": ["name"],
  "foreignKeys": [{
  "fields": ["parent_id"],
  "reference": {"resource": "resource", "fields": ["id"]}
  }]
}')$valid)
  expect_equal(profile$name, "table-schema")
})

# 
test_that("table-schema is up-to-date", {
  profile <- Profile.load('geojson')
  expect_silent(profile$jsonschema)
})

test_that("error", {
  expect_error(Profile.load('geo-json'))
  expect_error(Profile.load(''))
})

test_that("url profile", {
  expect_equal(Profile.load('tableschema')$jsonschema,
               Profile.load('https://raw.githubusercontent.com/frictionlessdata/tableschema-r/master/inst/profiles/tableschema.json')$jsonschema)
})

test_that("local file profile", {
  expect_equal(Profile.load('inst/profiles/tableschema.json')$jsonschema, 
               Profile.load('https://raw.githubusercontent.com/frictionlessdata/tableschema-r/master/inst/profiles/tableschema.json')$jsonschema)
  expect_equal(Profile.load('inst/profiles/tableschema.json')$jsonschema, Profile.load('tableschema')$jsonschema)
})

Try the tableschema.r package in your browser

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

tableschema.r documentation built on Sept. 30, 2022, 1:06 a.m.