package com.devsoap.json; import org.junit.jupiter.api.Test; import static com.devsoap.json.JsonAssert.assertThat; public class FieldTraversalAssertionTest { private static final String JSON = """ { "level": 0, "root": { "level": 1, "child": { "level": 2, "child": { "level": 3, "last": 42 } } } } """; @Test public void root() { assertThat(JSON).field("level").isEqualTo(0); assertThat(JSON).field("root").isNotNull(); } @Test public void fieldTraversal() { assertThat(JSON) .field("root") .field("child") .field("level") .isEqualTo(2); } @Test public void pathTraversal() { assertThat(JSON) .path("root", "child", "level") .isEqualTo(2); } @Test public void firstFieldMatching() { assertThat(JSON) .firstField("child") .field("level") .isEqualTo(2); assertThat(JSON) .firstField("last") .isEqualTo(42); } @Test public void lastFieldMatching() { assertThat(JSON) .lastField("child") .field("level") .isEqualTo(3); assertThat(JSON) .lastField("level") .isEqualTo(3); } @Test public void nthFieldMatching() { assertThat(JSON) .nthField("child", 1) .field("level") .isEqualTo(3); for (var level=0; level<=3; level++) { assertThat(JSON) .nthField("level", level) .isEqualTo(level); } } }