better display labels and less columns in tables (deliberately not yet in SepaMandate*)
This commit is contained in:
@ -0,0 +1,167 @@
|
||||
package org.hostsharing.hsadminng.service;
|
||||
|
||||
import org.apache.commons.lang3.RandomUtils;
|
||||
import org.hostsharing.hsadminng.domain.Asset;
|
||||
import org.hostsharing.hsadminng.domain.enumeration.AssetAction;
|
||||
import org.hostsharing.hsadminng.repository.AssetRepository;
|
||||
import org.hostsharing.hsadminng.service.dto.AssetDTO;
|
||||
import org.hostsharing.hsadminng.service.mapper.AssetMapper;
|
||||
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowableOfType;
|
||||
import static org.mockito.ArgumentMatchers.same;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
|
||||
// HINT: In IntelliJ IDEA such unit test classes can be created with Shift-Ctrl-T.
|
||||
// Do not forget to amend the class name (.e.g. ...UnitTest / ...IntTest)!
|
||||
public class AssetServiceUnitTest {
|
||||
|
||||
@Rule
|
||||
public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock
|
||||
private EntityManager em;
|
||||
|
||||
@Mock
|
||||
private AssetRepository assetRepository;
|
||||
|
||||
@Mock
|
||||
private AssetValidator assetValidator; // needed for @InjectMocks assetService
|
||||
|
||||
@Mock
|
||||
private AssetMapper assetMapper;
|
||||
|
||||
@InjectMocks
|
||||
private AssetService assetService;
|
||||
|
||||
// HINT: Click outside of any test method (e.g. here) and use Ctrl-Shift-F10
|
||||
// to run all tests from this test class. Use Ctrl-F5 to run the last execution again;
|
||||
// 'execution' here can also apply to running the application, whatever ran last.
|
||||
|
||||
// HINT: In IntelliJ IDEA such test methods can be created with Alt-Insert.
|
||||
@Test
|
||||
public void deleteIsRejectedForAssetTransactions() {
|
||||
// when
|
||||
final Throwable throwException = catchThrowableOfType(() -> assetService.delete(RandomUtils.nextLong()), BadRequestAlertException.class);
|
||||
|
||||
// then
|
||||
// HINT: When using auto-import for assertions (e.g. via Alt-Enter in IntelliJ IDEA),
|
||||
// beware to use the correct candidate from org.assertj.core.api.Assertions.
|
||||
assertThat(throwException).isEqualToComparingFieldByField(
|
||||
new BadRequestAlertException("Asset transactions are immutable", "asset", "assetTransactionImmutable"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveShouldPersistValidTransactions() {
|
||||
// given
|
||||
final AssetDTO givenAssetDTO = givenAssetDTO(null, AssetAction.PAYMENT, anyPositiveAmout());
|
||||
// HINT: given(...)...will...() can't be used for void methods, in that case use Mockito's do...() methods
|
||||
doNothing().when(assetValidator).validate(givenAssetDTO);
|
||||
|
||||
// when
|
||||
final AssetDTO returnedAssetDto = assetService.save(givenAssetDTO);
|
||||
|
||||
// then
|
||||
verify(em).flush();
|
||||
verify(em).refresh(any(Asset.class));
|
||||
assertThat(returnedAssetDto).isEqualToIgnoringGivenFields(givenAssetDTO, "id");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveShouldNotPersistInvalidTransactions() {
|
||||
// given
|
||||
final AssetDTO givenAssetDTO = givenAssetDTO(null, AssetAction.PAYMENT, anyNegativeAmount());
|
||||
doThrow(new BadRequestAlertException("Some Dummy Test Violation", "asset", "assetInvalidTestDummy")).when(assetValidator).validate(givenAssetDTO);
|
||||
|
||||
// when
|
||||
final Throwable throwException = catchThrowableOfType(() -> assetService.save(givenAssetDTO), BadRequestAlertException.class);
|
||||
|
||||
// then
|
||||
assertThat(throwException).isEqualToComparingFieldByField(
|
||||
new BadRequestAlertException("Some Dummy Test Violation", "asset", "assetInvalidTestDummy"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveShouldUpdateValidTransactions() {
|
||||
// given
|
||||
final AssetDTO givenAssetDTO = givenAssetDTO(anyNonNullId(), AssetAction.PAYMENT, anyPositiveAmout());
|
||||
doNothing().when(assetValidator).validate(givenAssetDTO);
|
||||
|
||||
// when
|
||||
final AssetDTO returnedAssetDto = assetService.save(givenAssetDTO);
|
||||
|
||||
// then
|
||||
verify(em).flush();
|
||||
verify(em).refresh(any(Asset.class));
|
||||
assertThat(returnedAssetDto).isEqualToIgnoringGivenFields(givenAssetDTO, "id");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveShouldNotUpdateInvalidTransactions() {
|
||||
// given
|
||||
final AssetDTO givenAssetDTO = givenAssetDTO(anyNonNullId(), AssetAction.PAYMENT, anyNegativeAmount());
|
||||
// HINT: given(...) can't be used for void methods, in that case use Mockito's do...() methods
|
||||
doThrow(new BadRequestAlertException("Some Dummy Test Violation", "asset", "assetInvalidTestDummy")).when(assetValidator).validate(givenAssetDTO);
|
||||
|
||||
// when
|
||||
final Throwable throwException = catchThrowableOfType(() -> assetService.save(givenAssetDTO), BadRequestAlertException.class);
|
||||
|
||||
// then
|
||||
assertThat(throwException).isEqualToComparingFieldByField(
|
||||
new BadRequestAlertException("Some Dummy Test Violation", "asset", "assetInvalidTestDummy"));
|
||||
}
|
||||
|
||||
// --- only test fixture code below ---
|
||||
|
||||
private long anyNonNullId() {
|
||||
return RandomUtils.nextInt();
|
||||
}
|
||||
|
||||
// HINT: This rather complicated setup indicates that the method AssetService::save breaks the single responsibility principle.
|
||||
private AssetDTO givenAssetDTO(final Long id, final AssetAction givenAction, final BigDecimal givenQuantity) {
|
||||
final AssetDTO givenAssetDTO = createAssetDTO(id, givenAction, givenQuantity);
|
||||
|
||||
// dto -> entity
|
||||
final Asset givenAssetEntity = Mockito.mock(Asset.class);
|
||||
given(assetMapper.toEntity(same(givenAssetDTO))).willReturn(givenAssetEntity);
|
||||
|
||||
// assetRepository.save(entity);
|
||||
final Asset persistedAssetEntity = Mockito.mock(Asset.class);
|
||||
given(assetRepository.save(same(givenAssetEntity))).willReturn(persistedAssetEntity);
|
||||
|
||||
// entity -> dto
|
||||
AssetDTO persistedAssetDTO = createAssetDTO(id == null ? RandomUtils.nextLong() : id, givenAction, givenQuantity);
|
||||
given(assetMapper.toDto(same(persistedAssetEntity))).willReturn(persistedAssetDTO);
|
||||
|
||||
return givenAssetDTO;
|
||||
}
|
||||
|
||||
private AssetDTO createAssetDTO(Long id, AssetAction givenAction, BigDecimal givenAmount) {
|
||||
final AssetDTO givenAssetDTO = new AssetDTO();
|
||||
givenAssetDTO.setId(id);
|
||||
givenAssetDTO.setAction(givenAction);
|
||||
givenAssetDTO.setAmount(givenAmount);
|
||||
return givenAssetDTO;
|
||||
}
|
||||
|
||||
private BigDecimal anyPositiveAmout() {
|
||||
return BigDecimal.valueOf(RandomUtils.nextInt()).add(new BigDecimal("0.1"));
|
||||
}
|
||||
|
||||
private BigDecimal anyNegativeAmount() {
|
||||
return anyPositiveAmout().negate();
|
||||
}
|
||||
}
|
@ -15,12 +15,13 @@ import org.mockito.Mockito;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowableOfType;
|
||||
import static org.mockito.ArgumentMatchers.same;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doThrow;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
|
||||
// HINT: In IntelliJ IDEA such unit test classes can be created with Shift-Ctrl-T.
|
||||
@ -30,6 +31,9 @@ public class ShareServiceUnitTest {
|
||||
@Rule
|
||||
public MockitoRule mockitoRule = MockitoJUnit.rule();
|
||||
|
||||
@Mock
|
||||
private EntityManager em;
|
||||
|
||||
@Mock
|
||||
private ShareRepository shareRepository;
|
||||
|
||||
@ -70,6 +74,8 @@ public class ShareServiceUnitTest {
|
||||
final ShareDTO returnedShareDto = shareService.save(givenShareDTO);
|
||||
|
||||
// then
|
||||
verify(em).flush();
|
||||
verify(em).refresh(any(Share.class));
|
||||
assertThat(returnedShareDto).isEqualToIgnoringGivenFields(givenShareDTO, "id");
|
||||
}
|
||||
|
||||
@ -97,6 +103,8 @@ public class ShareServiceUnitTest {
|
||||
final ShareDTO returnedShareDto = shareService.save(givenShareDTO);
|
||||
|
||||
// then
|
||||
verify(em).flush();
|
||||
verify(em).refresh(any(Share.class));
|
||||
assertThat(returnedShareDto).isEqualToIgnoringGivenFields(givenShareDTO, "id");
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,8 @@ public class CustomerDTOUnitTest {
|
||||
toJSonFieldDefinition("id", given.getId()) + "," +
|
||||
toJSonFieldDefinition("reference", given.getReference()) + "," +
|
||||
toJSonFieldDefinition("prefix", given.getPrefix()) + "," +
|
||||
toJSonFieldDefinition("name", given.getName()) +
|
||||
toJSonFieldDefinition("name", given.getName()) + "," +
|
||||
toJSonFieldDefinition("displayLabel", given.getDisplayLabel()) +
|
||||
"}";
|
||||
assertEquals(expectedJSon, actual);
|
||||
}
|
||||
@ -118,7 +119,7 @@ public class CustomerDTOUnitTest {
|
||||
expected.setId(1234L);
|
||||
expected.setContractualSalutation("Hallo Updated");
|
||||
expected.setBillingSalutation("Moin Updated");
|
||||
assertThat(actual).isEqualToComparingFieldByField(expected);
|
||||
assertThat(actual).isEqualToIgnoringGivenFields(expected, "displayLabel");
|
||||
}
|
||||
|
||||
// --- only test fixture below ---
|
||||
@ -140,12 +141,11 @@ public class CustomerDTOUnitTest {
|
||||
toJSonFieldDefinitionIfPresent("contractualAddress", dto.getContractualAddress()) +
|
||||
toJSonFieldDefinitionIfPresent("billingSalutation", dto.getBillingSalutation()) +
|
||||
toJSonFieldDefinitionIfPresent("billingAddress", dto.getBillingAddress()) +
|
||||
toJSonFieldDefinitionIfPresent("remark", dto.getRemark());
|
||||
toJSonFieldDefinitionIfPresent("remark", dto.getRemark()) +
|
||||
toJSonFieldDefinitionIfPresent("displayLabel", dto.getDisplayLabel());
|
||||
return "{" + json.substring(0, json.length() - 1) + "}";
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String toJSonFieldDefinition(String name, String value) {
|
||||
return inQuotes(name) + ":" + (value != null ? inQuotes(value) : "null");
|
||||
}
|
||||
@ -186,6 +186,7 @@ public class CustomerDTOUnitTest {
|
||||
given.setBillingAddress("Noch eine Adresse");
|
||||
given.setBillingSalutation("Moin");
|
||||
given.setRemark("Eine Bemerkung");
|
||||
given.setDisplayLabel("Display Label");
|
||||
return given;
|
||||
}
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ public class ShareDTOUnitTest {
|
||||
givenDTO.setAction(ShareAction.SUBSCRIPTION);
|
||||
givenDTO.setQuantity(3);
|
||||
givenDTO.setDocumentDate(LocalDate.parse("2019-04-22"));
|
||||
givenDTO.setMembershipDisplayReference("2019-04-21"); // TODO: why is this not a LocalDate?
|
||||
givenDTO.setMembershipDisplayLabel("2019-04-21"); // TODO: why is this not a LocalDate?
|
||||
givenDTO.setValueDate(LocalDate.parse("2019-04-30"));
|
||||
givenDTO.setRemark("Some Remark");
|
||||
return givenDTO;
|
||||
|
@ -248,7 +248,7 @@ public class MembershipResourceIntTest {
|
||||
.andExpect(jsonPath("$.[*].cancellationDocumentDate").value(hasItem(DEFAULT_CANCELLATION_DOCUMENT_DATE.toString())))
|
||||
.andExpect(jsonPath("$.[*].memberFromDate").value(hasItem(DEFAULT_MEMBER_FROM_DATE.toString())))
|
||||
.andExpect(jsonPath("$.[*].memberUntilDate").value(hasItem(DEFAULT_MEMBER_UNTIL_DATE.toString())))
|
||||
.andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK.toString())));
|
||||
.andExpect(jsonPath("$.[*].remark").value(hasItem(DEFAULT_REMARK)));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -266,7 +266,7 @@ public class MembershipResourceIntTest {
|
||||
.andExpect(jsonPath("$.cancellationDocumentDate").value(DEFAULT_CANCELLATION_DOCUMENT_DATE.toString()))
|
||||
.andExpect(jsonPath("$.memberFromDate").value(DEFAULT_MEMBER_FROM_DATE.toString()))
|
||||
.andExpect(jsonPath("$.memberUntilDate").value(DEFAULT_MEMBER_UNTIL_DATE.toString()))
|
||||
.andExpect(jsonPath("$.remark").value(DEFAULT_REMARK.toString()));
|
||||
.andExpect(jsonPath("$.remark").value(DEFAULT_REMARK));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -682,9 +682,7 @@ public class MembershipResourceIntTest {
|
||||
// Disconnect from session so that the updates on updatedMembership are not directly saved in db
|
||||
em.detach(updatedMembership);
|
||||
updatedMembership
|
||||
.admissionDocumentDate(UPDATED_ADMISSION_DOCUMENT_DATE)
|
||||
.cancellationDocumentDate(UPDATED_CANCELLATION_DOCUMENT_DATE)
|
||||
.memberFromDate(UPDATED_MEMBER_FROM_DATE)
|
||||
.memberUntilDate(UPDATED_MEMBER_UNTIL_DATE)
|
||||
.remark(UPDATED_REMARK);
|
||||
MembershipDTO membershipDTO = membershipMapper.toDto(updatedMembership);
|
||||
@ -698,9 +696,9 @@ public class MembershipResourceIntTest {
|
||||
List<Membership> membershipList = membershipRepository.findAll();
|
||||
assertThat(membershipList).hasSize(databaseSizeBeforeUpdate);
|
||||
Membership testMembership = membershipList.get(membershipList.size() - 1);
|
||||
assertThat(testMembership.getAdmissionDocumentDate()).isEqualTo(UPDATED_ADMISSION_DOCUMENT_DATE);
|
||||
assertThat(testMembership.getAdmissionDocumentDate()).isEqualTo(DEFAULT_ADMISSION_DOCUMENT_DATE);
|
||||
assertThat(testMembership.getCancellationDocumentDate()).isEqualTo(UPDATED_CANCELLATION_DOCUMENT_DATE);
|
||||
assertThat(testMembership.getMemberFromDate()).isEqualTo(UPDATED_MEMBER_FROM_DATE);
|
||||
assertThat(testMembership.getMemberFromDate()).isEqualTo(DEFAULT_MEMBER_FROM_DATE);
|
||||
assertThat(testMembership.getMemberUntilDate()).isEqualTo(UPDATED_MEMBER_UNTIL_DATE);
|
||||
assertThat(testMembership.getRemark()).isEqualTo(UPDATED_REMARK);
|
||||
}
|
||||
|
Reference in New Issue
Block a user