assertj-db
assertj-db copied to clipboard
How to check value on a Postgres JsonB field?
I trying to check the values inserted on a table where a field is of the type jsonb.
When I run something like this:
assertThat(eventsTable)
.row(0)
.value("data").isEqualTo("{\"key\": \"value\"}");
I get the following error:
[Value at index 0 (column name : DATA) of Row at index 0 of events table]
Expecting:
<{"key": "value"}>
to be of type
<[TEXT, NUMBER, DATE, TIME, DATE_TIME, UUID]>
but was of type
<NOT_IDENTIFIED> (org.postgresql.util.PGobject)
Here is the table content:
[events table]
|-----------|---------|-------------------------------------------------------|
| | | |
| | PRIMARY | DATA |
| | KEY | (NOT_IDENTIFIED : class org.postgresql.util.PGobject) |
| | | Index : 0 |
|-----------|---------|-------------------------------------------------------|
| Index : 0 | | {"key": "value"} |
|-----------|---------|-------------------------------------------------------|
Using assertj-db 2.0.0
Is there any way I can check the content of a PostgreSQL jsonb column?
Hi @jfisbein , Indeed it's a good question, do - you tried with Condition assertion ?
I will check that on side and I will send you a feedback soon.
Thanks @VanRoy I solved it using Condition
new Condition<>(d -> d.getValue().equals("my expected value"), "Json value is");
Great @jfisbein , I still try to see if we can improve the JSON support.