Skip to content

Commit

Permalink
Tests données tableau passent
Browse files Browse the repository at this point in the history
  • Loading branch information
julienmalard committed Nov 23, 2023
1 parent e5076e6 commit 740d9d3
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 15 deletions.
12 changes: 2 additions & 10 deletions R/client.R
Original file line number Diff line number Diff line change
Expand Up @@ -281,17 +281,9 @@ Client <- R6Class(
"tableaux.suivreDonnéesExportation",
paramètres = list(idTableau=idTableau, langues=langues)
)
td <- donnéesTableauÀTrame(données["données"])

colonnes <- unique(unlist(sapply(données["données"][[1]], function (x) names(x))))
nRangées <- length(données["données"][[1]])

tableau_données <- data.frame(matrix(nrow=nRangées, ncol=length(colonnes)))
colnames(tableau_données) <- colonnes
for (colonne in colonnes) {
tableau_données[[colonne]] <- sapply(données["données"][[1]], function (x) x[[colonne]])
}
tableau_données <- tableau_données %>% replace(.=="NULL", NA)
return(tableau_données)
return(td)
},

fermer = function() {
Expand Down
24 changes: 24 additions & 0 deletions R/utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,27 @@ résoudreNomFonction <- function(nomFonction) {
return(strsplit(nomFonction, split="[.]")[[1]])
}
}

#' Transforme des données de tableau de format Constellation en
#' format de trame de données tibble R.
#'
#' @param données Les données provenant de Constellation
#'
#' @return Une trame de données en format tibble R
#'
#' @examples
#' données <- jsonlite::fromJSON("{\"données\":[{\"a050decf-fc58-4283-8b85-0b791041aaa9\":123},{\"6a5dfef5-2e7e-46c2-bbe0-134cce21fd66\":\"abc\",\"a050decf-fc58-4283-8b85-0b791041aaa9\":456}]}", simplifyDataFrame = FALSE)
#' td <- donnéesTableauÀTrame(données["données"])
#'
donnéesTableauÀTrame <- function(données) {
colonnes <- unique(unlist(sapply(données[[1]], function (x) names(x))))
nRangées <- length(données[[1]])

trame_données <- data.frame(matrix(nrow=nRangées, ncol=length(colonnes)))
colnames(trame_données) <- colonnes
for (colonne in colonnes) {
trame_données[[colonne]] <- sapply(données[[1]], function (x) if (is.null(x[[colonne]])) NA else x[[colonne]])
}

return(as_tibble(trame_données))
}
25 changes: 20 additions & 5 deletions tests/testthat/test-client.R
Original file line number Diff line number Diff line change
Expand Up @@ -144,21 +144,36 @@ avecClientEtServeurTest(
"variables.créerVariable",
list(catégorie="numérique")
)
idVarC <- client$appeler(
"variables.créerVariable",
list(catégorie="chaîneNonTraduisible")
)
idCol <- client$appeler(
"tableaux.ajouterColonneTableau",
list(idTableau=idTableau, idVariable=idVar)
)
vals <- list()
vals[[idCol]] <- 123
él <- client$appeler(
idColC <- client$appeler(
"tableaux.ajouterColonneTableau",
list(idTableau=idTableau, idVariable=idVarC)
)
vals1 <- list()
vals1[[idCol]] <- 123

vals2 <- list()
vals2[[idCol]] <- 456
vals2[[idColC]] <- "abc"
print(list(vals1, vals2))

client$appeler(
"tableaux.ajouterÉlément",
list(idTableau=idTableau, vals=vals)
list(idTableau=idTableau, vals=list(vals1, vals2))
)

donnéesTableau <- client$obtDonnéesTableau(idTableau = idTableau)

référence <- data.frame(colNumérique=123)
référence <- tibble::as_tibble(data.frame(colNumérique=c(123, 456), colTexte=c(NA, "abc")))
names(référence)[names(référence) == "colNumérique"] <- idCol
names(référence)[names(référence) == "colTexte"] <- idColC

testthat::expect_equal(donnéesTableau, référence)
})
Expand Down
9 changes: 9 additions & 0 deletions tests/testthat/test-utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,12 @@ testthat::test_that("Auto-détection type recherche", {
résolu <- résoudreTypeFonction("rechercher.rechercherBdsSelonNom")
testthat::expect_equal(résolu, "recherche")
})

testthat::test_that("Conversion données tableau", {
données <- jsonlite::fromJSON(
"{\"données\":[{\"col1\":123},{\"col2\":\"abc\",\"col1\":456}]}",
simplifyDataFrame = FALSE
)
td <- donnéesTableauÀTrame(données["données"])
testthat::expect_equal(td, tibble(col1=c(123, 456), col2=c(NA, "abc")))
})

0 comments on commit 740d9d3

Please sign in to comment.