Home / Class/ MappedObjectTests Class — spring-boot Architecture

MappedObjectTests Class — spring-boot Architecture

Architecture documentation for the MappedObjectTests class in MappedObjectTests.java from the spring-boot codebase.

Entity Profile

Source Code

buildpack/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/json/MappedObjectTests.java lines 35–125

class MappedObjectTests extends AbstractJsonTests {

	private final TestMappedObject mapped;

	MappedObjectTests() throws IOException {
		this.mapped = TestMappedObject.of(getContent("test-mapped-object.json"));
	}

	@Test
	void ofReadsJson() {
		assertThat(this.mapped.getNode()).isNotNull();
	}

	@Test
	void valueAtWhenStringReturnsValue() {
		assertThat(this.mapped.valueAt("/string", String.class)).isEqualTo("stringvalue");
	}

	@Test
	void valueAtWhenStringArrayReturnsValue() {
		assertThat(this.mapped.valueAt("/stringarray", String[].class)).containsExactly("a", "b");
	}

	@Test
	void valueAtWhenMissingReturnsNull() {
		assertThat(this.mapped.valueAt("/missing", String.class)).isNull();
	}

	@Test
	void valueAtWhenInterfaceReturnsProxy() {
		Person person = this.mapped.valueAt("/person", Person.class);
		assertThat(person).isNotNull();
		assertThat(person.getName().getFirst()).isEqualTo("spring");
		assertThat(person.getName().getLast()).isEqualTo("boot");
	}

	@Test
	void valueAtWhenInterfaceAndMissingReturnsProxy() {
		Person person = this.mapped.valueAt("/missing", Person.class);
		assertThat(person).isNotNull();
		assertThat(person.getName().getFirst()).isNull();
		assertThat(person.getName().getLast()).isNull();
	}

	@Test
	void valueAtWhenActualPropertyStartsWithUppercaseReturnsValue() {
		assertThat(this.mapped.valueAt("/startsWithUppercase", String.class)).isEqualTo("value");
	}

	@Test
	void valueAtWhenDefaultMethodReturnsValue() {
		Person person = this.mapped.valueAt("/person", Person.class);
		assertThat(person).isNotNull();
		assertThat(person.getName().getFullName()).isEqualTo("dr spring boot");
	}

	/**
	 * {@link MappedObject} for testing.
	 */
	static class TestMappedObject extends MappedObject {

		TestMappedObject(JsonNode node) {
			super(node, MethodHandles.lookup());
		}

		static TestMappedObject of(InputStream content) throws IOException {
			return of(content, TestMappedObject::new);
		}

		interface Person {

			Name getName();

			interface Name {

				String getFirst();

				String getLast();

				default String getFullName() {
					String title = valueAt(this, "/title", String.class);
					return title + " " + getFirst() + " " + getLast();
				}

			}

		}

	}

}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free