expenditure_concept = direct|total in cog_spending(), refused in the cross-government verbs #10

Merged
jared merged 20 commits from feat/expenditure-concept into main 2026-07-27 13:13:02 -04:00
4 changed files with 17 additions and 3 deletions
Showing only changes of commit 7ed1da9b79 - Show all commits
+1 -1
View File
@@ -55,7 +55,7 @@ cog_spending <- function(govid, years, category = NULL,
verb = "cog_spending",
view_base = "spending_annotated",
subtype_col = "spend_subtype",
flow_prefixes = c("E", "F", "G", "K"),
flow_prefixes = c("E", "F", "G"),
call = match.call(),
govid = govid,
years = years,
+1 -1
View File
@@ -1,5 +1,5 @@
CREATE OR REPLACE VIEW spending_long AS
SELECT *
FROM long
WHERE LEFT(item_code, 1) IN ('E', 'F', 'G', 'K')
WHERE LEFT(item_code, 1) IN ('E', 'F', 'G')
AND NOT is_aggregate;
+1 -1
View File
@@ -3,4 +3,4 @@ SELECT * REPLACE (harmonized_code AS item_code)
FROM long
WHERE NOT is_aggregate
AND harmonized_code IS NOT NULL
AND LEFT(harmonized_code, 1) IN ('E', 'F', 'G', 'K');
AND LEFT(harmonized_code, 1) IN ('E', 'F', 'G');
+14
View File
@@ -0,0 +1,14 @@
test_that("the corpus contains no K-prefix rows, so the Direct leg omits K", {
con <- .ensure_session()
n <- DBI::dbGetQuery(con,
"SELECT COUNT(*) AS n FROM long WHERE LEFT(item_code, 1) = 'K'")$n
expect_equal(n, 0)
sql_files <- c("20-spending_long.sql", "22-spending_long_harmonized.sql")
for (f in sql_files) {
txt <- paste(readLines(system.file("sql", f, package = "uscogdata")),
collapse = " ")
expect_false(grepl("'K'", txt, fixed = TRUE),
label = paste(f, "must not reference the inert K prefix"))
}
})