{"id":15056905,"url":"https://github.com/ekino/jcv-db","last_synced_at":"2025-07-11T05:39:24.806Z","repository":{"id":57719016,"uuid":"217051634","full_name":"ekino/jcv-db","owner":"ekino","description":"JSON Content Validator for Database (JCV-DB) allow you to compare database contents against a JSON with JCV validators.","archived":false,"fork":false,"pushed_at":"2024-11-11T20:48:52.000Z","size":467,"stargazers_count":7,"open_issues_count":14,"forks_count":1,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-10T05:03:38.863Z","etag":null,"topics":["assertions","assertj","assertj-assertions","cassandra","java","jcv","json","kotlin","mongodb","mssql","mysql","postgresql","testing"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-23T12:28:07.000Z","updated_at":"2025-04-04T02:14:00.000Z","dependencies_parsed_at":"2023-02-01T04:00:35.756Z","dependency_job_id":"653ae9d8-bd97-4415-96c2-e81a6116d29c","html_url":"https://github.com/ekino/jcv-db","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/ekino/jcv-db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekino%2Fjcv-db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekino%2Fjcv-db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekino%2Fjcv-db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekino%2Fjcv-db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekino","download_url":"https://codeload.github.com/ekino/jcv-db/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekino%2Fjcv-db/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264740473,"owners_count":23656780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assertions","assertj","assertj-assertions","cassandra","java","jcv","json","kotlin","mongodb","mssql","mysql","postgresql","testing"],"created_at":"2024-09-24T21:58:00.737Z","updated_at":"2025-07-11T05:39:24.780Z","avatar_url":"https://github.com/ekino.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JCV-DB\n\nJSON Content Validator for Database (JCV-DB) allow you to compare database contents against a JSON with [JCV](https://github.com/ekino/jcv) validators.\n\n[![Build Status](https://travis-ci.org/ekino/jcv-db.svg?branch=master)](https://travis-ci.org/ekino/jcv-db)\n[![GitHub (pre-)release](https://img.shields.io/github/release/ekino/jcv-db/all.svg)](https://github.com/ekino/jcv-db/releases)\n[![Maven Central](https://img.shields.io/maven-central/v/com.ekino.oss.jcv-db/jcv-db-core)](https://search.maven.org/search?q=g:com.ekino.oss.jcv-db)\n[![GitHub license](https://img.shields.io/github/license/ekino/jcv.svg)](https://github.com/ekino/jcv/blob/master/LICENSE.md)\n\n## Table of contents\n\n* [Summary](#summary)\n* [Prerequisites](#prerequisites)\n* [Quick start](#quick-start)\n    * [Assertj-db module](#assertj-db)\n    * [JDBC module](#jdbc-module)\n    * [Cassandra module](#cassandra-module)\n    * [Mongo database module](#mongo-database-module)\n\n## Summary\n\nJCV-DB provides assertions to validate database content against a json file. The goal is for now to support SQL and NoSQL databases : PostgreSQL, MySQL, MSSQL, Cassandra and mongoDB. \n[JCV](https://github.com/ekino/jcv) validators are also supported making tests light and exhaustive.\n\n## Prerequisites\n\nIf you want to test this project locally we must have the following software install:\n-\tJava 11 (if launching without using Gradle)\n-\tDocker\n-\tDocker compose\n\nSome tests require that the database container is running. To start the containers, run the following command in the project root:\n````bash\ndocker compose up -d\n````\n\n## Quick Start\n\n### Assertj-db\n\nA JCV-DB module that supports [Assertj-db](https://github.com/joel-costigliola/assertj-db). Only PostgreSQL, MySQL, MSSQL server are supported in this module.\n\n#### Example\n\n````kotlin\nimport static com.ekino.oss.jcv.db.assertj.DbComparatorAssertJ.assertThatTable\n\n@Test\nfun testContentTable() {\n    assertThatTable(assertDb.table(\"table_name\"))\n    .isValidAgainst(\"\"\"[\n        {\n            \"id\": \"e3881fb1-b3dd-4701-b08c-f5d17389edfa\",\n            \"number_field\": 1,\n            \"boolean_field: true,\n            \"string_field\": \"Hello\"\n        }\n    ]\"\"\".trimIndent())\n}\n````\n\n#### Dependencies\n\nMaven\n\n```xml\n\u003cdependencies\u003e\n  ...\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.skyscreamer\u003c/groupId\u003e\n    \u003cartifactId\u003ejsonassert\u003c/artifactId\u003e\n    \u003cversion\u003e1.5.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.assertj\u003c/groupId\u003e\n    \u003cartifactId\u003eassertj-db\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.1\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv-db\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-db-assertj-db\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.5\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  ...\n\u003c/dependencies\u003e\n```\n\nGradle\n\n```groovy\ndependencies {\n    ...\n    testImplementation 'org.skyscreamer:jsonassert:1.5.0'\n    testImplementation 'org.assertj:assertj-db:1.2.0'\n    testImplementation 'com.ekino.oss.jcv:jcv-core:1.4.1'\n    testImplementation 'com.ekino.oss.jcv-db:jcv-db-assertj-db:0.0.3'\n    ...\n}\n```\n### Jdbc module\n\nA JCV-DB module that allow you to execute sql requests. Only PostgreSQL, MySQL, MSSQL server are supported in this module.\n\n#### Example\n\n````kotlin\nimport static com.ekino.oss.jcv.db.jdbc.DbComparatorJDBC.assertThatQuery\n\n@Test\nfun testContentTable() {\n    assertThatQuery(\"select * from table_name\")\n    .isValidAgainst(\"\"\"[\n        {\n            \"id\": \"e3881fb1-b3dd-4701-b08c-f5d17389edfa\",\n            \"number_field\": 1,\n            \"boolean_field: true,\n            \"string_field\": \"Hello\"\n        }\n    ]\"\"\".trimIndent())\n}\n````\n\n#### Dependencies\n\nMaven\n\n```xml\n\u003cdependencies\u003e\n  ...\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.skyscreamer\u003c/groupId\u003e\n    \u003cartifactId\u003ejsonassert\u003c/artifactId\u003e\n    \u003cversion\u003e1.5.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.assertj\u003c/groupId\u003e\n    \u003cartifactId\u003eassertj-db\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.1\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv-db\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-db-jdbc\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.5\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  ...\n\u003c/dependencies\u003e\n```\n\nGradle\n\n```groovy\ndependencies {\n    ...\n    testImplementation 'org.skyscreamer:jsonassert:1.5.0'\n    testImplementation 'org.assertj:assertj-db:1.2.0'\n    testImplementation 'com.ekino.oss.jcv:jcv-core:1.4.1'\n    testImplementation 'com.ekino.oss.jcv-db:jcv-db-jdbc:0.0.3'\n    ...\n}\n```\n\n### Cassandra module\n\nA JCV-DB module that allow you to execute cql requests and criteria builder in cassandra database\n\n#### Example\n\n````kotlin\nimport static com.ekino.oss.jcv.db.cassandra.DbComparatorCassandra.assertThatQuery\n\n@Test\nfun testContentTable() {\n    assertThatQuery(\"select * from table_name\")\n    .isValidAgainst(\"\"\"[\n        {\n            \"id\": \"e3881fb1-b3dd-4701-b08c-f5d17389edfa\",\n            \"number_field\": 1,\n            \"boolean_field: true,\n            \"string_field\": \"Hello\"\n        }\n    ]\"\"\".trimIndent())\n}\n````\n\n#### Dependencies\n\nMaven\n\n```xml\n\u003cdependencies\u003e\n  ...\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.skyscreamer\u003c/groupId\u003e\n    \u003cartifactId\u003ejsonassert\u003c/artifactId\u003e\n    \u003cversion\u003e1.5.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.assertj\u003c/groupId\u003e\n    \u003cartifactId\u003eassertj-db\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.1\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv-db\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-db-cassandra\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.5\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  ...\n\u003c/dependencies\u003e\n```\n\nGradle\n\n```groovy\ndependencies {\n    ...\n    testImplementation 'org.skyscreamer:jsonassert:1.5.0'\n    testImplementation 'org.assertj:assertj-db:1.2.0'\n    testImplementation 'com.ekino.oss.jcv:jcv-core:1.4.1'\n    testImplementation 'com.ekino.oss.jcv-db:jcv-db-cassandra:0.0.3'\n    ...\n}\n```\n\n### Mongo database module\n\nA JCV-DB module that allow you to mongo database content against a json file.\n\n#### Example\n\n````kotlin\nimport static com.ekino.oss.jcv.db.mongo.DbComparatorMongo.assertThatCollection\n\n@Test\nfun testContentTable() {\n    assertThatQuery(database.getCollection(\"testCollection\").find(eq(\"name\", \"test-mongo-db\"))\n    .isValidAgainst(\"\"\"[\n        {\n            \"id\": \"e3881fb1-b3dd-4701-b08c-f5d17389edfa\",\n            \"number_field\": 1,\n            \"boolean_field: true,\n            \"string_field\": \"Hello\"\n        }\n    ]\"\"\".trimIndent())\n}\n````\n\n#### Dependencies\n\nMaven\n\n```xml\n\u003cdependencies\u003e\n  ...\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.skyscreamer\u003c/groupId\u003e\n    \u003cartifactId\u003ejsonassert\u003c/artifactId\u003e\n    \u003cversion\u003e1.5.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003eorg.assertj\u003c/groupId\u003e\n    \u003cartifactId\u003eassertj-db\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.1\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003ecom.ekino.oss.jcv-db\u003c/groupId\u003e\n    \u003cartifactId\u003ejcv-db-mongo\u003c/artifactId\u003e\n    \u003cversion\u003e0.0.5\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n  \u003c/dependency\u003e\n  ...\n\u003c/dependencies\u003e\n```\n\nGradle\n\n```groovy\ndependencies {\n    ...\n    testImplementation 'org.skyscreamer:jsonassert:1.5.0'\n    testImplementation 'org.assertj:assertj-db:1.2.0'\n    testImplementation 'com.ekino.oss.jcv:jcv-core:1.4.1'\n    testImplementation 'com.ekino.oss.jcv-db:jcv-db-mongo:0.0.1'\n    ...\n}\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekino%2Fjcv-db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekino%2Fjcv-db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekino%2Fjcv-db/lists"}