/** Test insert tag. */
  @Test
  public void testInsertTag() {
    // Validation situation
    TagRequest tagRequest = new TagRequest();
    TagResponse response = getTagBCF().insertTag(tagRequest);
    assertFalse(response.isOperationSuccess());
    assertMessages(
        response,
        SENSUS_MLC_VALIDATOR_ID_REQUIRED,
        SENSUS_MLC_VALIDATOR_REQUIRED,
        SENSUS_MLC_VALIDATOR_ID_REQUIRED);

    // Success situation
    tagRequest = TestBaseUtil.createTagRequest();
    Tag tag = TestBaseUtil.createTag();
    tag.setLights(Arrays.asList(TestBaseUtil.createLight()));
    tagRequest.setTag(tag);
    response = getTagBCF().insertTag(tagRequest);
    assertTrue(response.isOperationSuccess());
    assertEquals(0, response.getMessageInfoList().size());

    // Error situation
    resetMocksToTagArea();
    setSituation(getTagBCF(), SituationsEnum.ERROR, ITagBCL.class);
    tagRequest = TestBaseUtil.createTagRequest();
    tag = TestBaseUtil.createTag();
    tag.setLights(Arrays.asList(TestBaseUtil.createLight()));
    tagRequest.setTag(tag);
    response = getTagBCF().insertTag(tagRequest);
    assertFalse(response.isOperationSuccess());
    assertMessages(response, ERROR_CODE);

    // Exception situation
    resetMocksToTagArea();
    setSituation(getTagBCF(), SituationsEnum.EXCEPTION, ITagBCL.class);
    tagRequest = TestBaseUtil.createTagRequest();
    tag = TestBaseUtil.createTag();
    tag.setLights(Arrays.asList(TestBaseUtil.createLight()));
    tagRequest.setTag(tag);
    response = getTagBCF().insertTag(tagRequest);
    assertFalse(response.isOperationSuccess());
    assertMessages(response, DEFAULT_TAG_BCF_EXCEPTION_MSG);

    // Error situation - Name length invalid
    tagRequest = TestBaseUtil.createTagRequest();
    tag = TestBaseUtil.createTag();
    tag.setName(StringUtils.repeat("n", ONE_HUNDRED_ONE));
    tagRequest.setTag(tag);
    response = getTagBCF().insertTag(tagRequest);
    assertFalse(response.isOperationSuccess());
    assertMessages(response, SENSUS_MLC_VALIDATOR_LENGTH_INVALID);
  }