### Question:
ModifySubject extends AbstractCommand<ModifySubject> implements PolicyModifyCommand<ModifySubject> { @Deprecated public static ModifySubject of(final String policyId, final Label label, final Subject subject, final DittoHeaders dittoHeaders) { return of(PolicyId.of(policyId), label, subject, dittoHeaders); } private  ModifySubject(final PolicyId policyId,
            final Label label,
            final Subject subject,
            final DittoHeaders dittoHeaders); @Deprecated static ModifySubject of(final String policyId,
            final Label label,
            final Subject subject,
            final DittoHeaders dittoHeaders); static ModifySubject of(final PolicyId policyId,
            final Label label,
            final Subject subject,
            final DittoHeaders dittoHeaders); static ModifySubject fromJson(final String jsonString, final DittoHeaders dittoHeaders); static ModifySubject fromJson(final JsonObject jsonObject, final DittoHeaders dittoHeaders); Label getLabel(); Subject getSubject(); @Override PolicyId getEntityId(); @Override Optional<JsonValue> getEntity(final JsonSchemaVersion schemaVersion); @Override JsonPointer getResourcePath(); @Override Category getCategory(); @Override ModifySubject setDittoHeaders(final DittoHeaders dittoHeaders); @SuppressWarnings("squid:MethodCyclomaticComplexity") @Override boolean equals(@Nullable final Object obj); @SuppressWarnings("squid:S109") @Override int hashCode(); @Override String toString(); static final String NAME; static final String TYPE; }### Answer:
@Test(expected = NullPointerException.class) public void tryToCreateInstanceWithNullPolicyId() { ModifySubject.of((PolicyId) null, TestConstants.Policy.LABEL, TestConstants.Policy.SUBJECT, TestConstants.EMPTY_DITTO_HEADERS); }
@Test(expected = PolicyIdInvalidException.class) public void tryToCreateInstanceWithNullPolicyIdString() { ModifySubject.of((String) null, TestConstants.Policy.LABEL, TestConstants.Policy.SUBJECT, TestConstants.EMPTY_DITTO_HEADERS); }
@Test public void tryToCreateInstanceWithInvalidPolicyId() { assertThatExceptionOfType(PolicyIdInvalidException.class) .isThrownBy(() -> ModifySubject.of("undefined", TestConstants.Policy.LABEL, TestConstants.Policy.SUBJECT, TestConstants.EMPTY_DITTO_HEADERS)); }
@Test(expected = NullPointerException.class) public void tryToCreateInstanceWithNullLabel() { ModifySubject.of(TestConstants.Policy.POLICY_ID, null, TestConstants.Policy.SUBJECT, TestConstants.EMPTY_DITTO_HEADERS); }
@Test(expected = NullPointerException.class) public void tryToCreateInstanceWithNullSubject() { ModifySubject.of(TestConstants.Policy.POLICY_ID, TestConstants.Policy.LABEL, null, TestConstants.EMPTY_DITTO_HEADERS); }
@Test public void toJsonReturnsExpected() { final ModifySubject underTest = ModifySubject.of(TestConstants.Policy.POLICY_ID, TestConstants.Policy.LABEL, TestConstants.Policy.SUBJECT, TestConstants.EMPTY_DITTO_HEADERS); final JsonObject actualJson = underTest.toJson(FieldType.regularOrSpecial()); assertThat(actualJson).isEqualTo(KNOWN_JSON); }