@Override
    public String buildContext() {
        final SelectorDO after = (SelectorDO) getAfter();
        if (Objects.isNull(getBefore())) {
            return String.format("the namespace [%s] selector [%s] is %s", after.getNamespaceId(), after.getName(), StringUtils.lowerCase(getType().getType().toString()));
        }
        return String.format("the namespace [%s] selector [%s] is %s : %s", after.getNamespaceId(), after.getName(), StringUtils.lowerCase(getType().getType().toString()), contrast());
        
    }
@Test
    void buildContextAndBeforeNotNullAndAllChange() {
        SelectorChangedEvent selectorChangedEvent
                = new SelectorChangedEvent(before, after, EventTypeEnum.SELECTOR_CREATE, "test-operator");

        SelectorDO before = (SelectorDO) selectorChangedEvent.getBefore();
        SelectorDO after = (SelectorDO) selectorChangedEvent.getAfter();

        final StringBuilder builder = new StringBuilder();
        builder.append(String.format("name[%s => %s] ", before.getName(), after.getName()));
        builder.append(String.format("handle[%s => %s] ", before.getHandle(), after.getHandle()));
        builder.append(String.format("type[%s => %s] ", before.getType(), after.getType()));
        builder.append(String.format("enable[%s => %s] ", before.getEnabled(), after.getEnabled()));
        builder.append(String.format("sort[%s => %s] ", before.getSort(), after.getSort()));
        builder.append(String.format("loged[%s => %s] ", before.getLoged(), after.getLoged()));

        String changeMsg = builder.toString();
        String expectMsg = String.format("the namespace [%s] selector [%s] is %s : %s", after.getNamespaceId(), after.getName(),
                StringUtils.lowerCase(selectorChangedEvent.getType().getType().toString()), changeMsg);

        String actualMsg = selectorChangedEvent.buildContext();

        assertEquals(expectMsg, actualMsg);
    }