Skip to content

Commit

Permalink
added the unit test and updated the existing one
Browse files Browse the repository at this point in the history
  • Loading branch information
dhiren-singh-007 committed Sep 19, 2024
1 parent 72a65e3 commit df68944
Showing 1 changed file with 134 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -632,7 +632,68 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany()
var sut = new RegistrationBusinessLogic(
_options,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
_identityService,
_dateTimeProvider,
_mailingProcessCreation);

var existingData = _fixture.Build<CompanyApplicationDetailData>()
.With(x => x.IsUserOfCompany, true)
.Create();

A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A<Guid>._, companyId))
.Returns(existingData);

A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.Invokes((Guid companyId, Action<Company>? initialize, Action<Company> modify) =>
{
company = new Company(companyId, null!, default, default);
initialize?.Invoke(company);
modify(company);
});

// Act
await sut.SetCompanyDetailDataAsync(applicationId, companyData);

// Assert
A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.MustHaveHappenedOnceExactly();
A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly();

company.Should().NotBeNull();
company.Should().Match<Company>(c =>
c.Id == companyId &&
c.Name == companyData.Name &&
c.Shortname == companyData.ShortName &&
c.BusinessPartnerNumber == companyData.BusinessPartnerNumber);
}

[Fact]
public async Task SetCompanyWithAddressAsync__WithCompanyNameChange_ModifiesCompany()
{
//Arrange
var applicationId = Guid.NewGuid();
var companyId = Guid.NewGuid();
var identityData = A.Fake<IIdentityData>();
Company? company = null;
A.CallTo(() => identityData.IdentityId).Returns(Guid.NewGuid());
A.CallTo(() => identityData.IdentityTypeId).Returns(IdentityTypeId.COMPANY_USER);
A.CallTo(() => identityData.CompanyId).Returns(companyId);
A.CallTo(() => _identityService.IdentityData).Returns(identityData);
var companyData = _fixture.Build<CompanyDetailData>()
.With(x => x.Name, "Test Company Updated Name")
.With(x => x.BusinessPartnerNumber, "BPNL00000001TEST")
.With(x => x.CompanyId, companyId)
.With(x => x.CountryAlpha2Code, _alpha2code)
.Create();

var sut = new RegistrationBusinessLogic(
_options,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
Expand All @@ -642,10 +703,12 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany()

var existingData = _fixture.Build<CompanyApplicationDetailData>()
.With(x => x.IsUserOfCompany, true)
.With(x => x.Name, "Test Company")
.Create();

A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A<Guid>._, companyId))
.Returns(existingData);
A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name));

A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.Invokes((Guid companyId, Action<Company>? initialize, Action<Company> modify) =>
Expand All @@ -662,6 +725,7 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany()
A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.MustHaveHappenedOnceExactly();
A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly();
A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)).MustHaveHappenedOnceExactly();

company.Should().NotBeNull();
company.Should().Match<Company>(c =>
Expand All @@ -671,6 +735,71 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany()
c.BusinessPartnerNumber == companyData.BusinessPartnerNumber);
}

[Fact]
public async Task SetCompanyWithAddressAsync__WithoutCompanyNameChange_ModifiesCompany()
{
//Arrange
var applicationId = Guid.NewGuid();
var companyId = Guid.NewGuid();
var identityData = A.Fake<IIdentityData>();
Company? company = null;
A.CallTo(() => identityData.IdentityId).Returns(Guid.NewGuid());
A.CallTo(() => identityData.IdentityTypeId).Returns(IdentityTypeId.COMPANY_USER);
A.CallTo(() => identityData.CompanyId).Returns(companyId);
A.CallTo(() => _identityService.IdentityData).Returns(identityData);
var companyData = _fixture.Build<CompanyDetailData>()
.With(x => x.Name, "Test Company")
.With(x => x.BusinessPartnerNumber, "BPNL00000001TEST")
.With(x => x.CompanyId, companyId)
.With(x => x.CountryAlpha2Code, _alpha2code)
.Create();

var sut = new RegistrationBusinessLogic(
_options,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
_identityService,
_dateTimeProvider,
_mailingProcessCreation);

var existingData = _fixture.Build<CompanyApplicationDetailData>()
.With(x => x.IsUserOfCompany, true)
.With(x => x.Name, "Test Company")
.Create();

A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A<Guid>._, companyId))
.Returns(existingData);
A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name));

A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.Invokes((Guid companyId, Action<Company>? initialize, Action<Company> modify) =>
{
company = new Company(companyId, null!, default, default);
initialize?.Invoke(company);
modify(company);
});

// Act
await sut.SetCompanyDetailDataAsync(applicationId, companyData);

// Assert
A.CallTo(() => _companyRepository.AttachAndModifyCompany(A<Guid>._, A<Action<Company>>._, A<Action<Company>>._))
.MustHaveHappenedOnceExactly();
A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly();
A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)).MustNotHaveHappened();

company.Should().NotBeNull();
company.Should().Match<Company>(c =>
c.Id == companyId &&
c.Name == companyData.Name &&
c.Shortname == companyData.ShortName &&
c.BusinessPartnerNumber == companyData.BusinessPartnerNumber);
}

Check warning on line 801 in tests/registration/Registration.Service.Tests/BusinessLogic/RegistrationBusinessLogicTest.cs

View workflow job for this annotation

GitHub Actions / Build, check and test services (8.0)

Avoid multiple blank lines

[Theory]
[InlineData(null)]
[InlineData("")]
Expand Down Expand Up @@ -700,7 +829,7 @@ public async Task SetCompanyWithAddressAsync_ModifyCompany(string? bpn)
var sut = new RegistrationBusinessLogic(
_options,
null!,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
Expand All @@ -718,7 +847,7 @@ public async Task SetCompanyWithAddressAsync_ModifyCompany(string? bpn)
initialize?.Invoke(company);
modify(company);
});

A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name));
// Act
await sut.SetCompanyDetailDataAsync(applicationId, companyData);

Expand Down Expand Up @@ -776,7 +905,7 @@ public async Task SetCompanyWithAddressAsync_WithoutInitialCompanyAddress_Create
var sut = new RegistrationBusinessLogic(
_options,
null!,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
Expand Down Expand Up @@ -865,7 +994,7 @@ public async Task SetCompanyWithAddressAsync_WithInitialCompanyAddress_ModifyAdd
var sut = new RegistrationBusinessLogic(
_options,
null!,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
Expand Down Expand Up @@ -974,7 +1103,7 @@ public async Task SetCompanyWithAddressAsync_WithUniqueIdentifiers_CreateModifyD
var sut = new RegistrationBusinessLogic(
_options,
null!,
null!,
_userProvisioningService,
null!,
_portalRepositories,
null!,
Expand Down

0 comments on commit df68944

Please sign in to comment.