From df689441c7bbc5bcd6d326db110792bb7a036d98 Mon Sep 17 00:00:00 2001 From: Dhirender Singh Date: Thu, 19 Sep 2024 14:18:21 +0200 Subject: [PATCH] added the unit test and updated the existing one --- .../RegistrationBusinessLogicTest.cs | 139 +++++++++++++++++- 1 file changed, 134 insertions(+), 5 deletions(-) diff --git a/tests/registration/Registration.Service.Tests/BusinessLogic/RegistrationBusinessLogicTest.cs b/tests/registration/Registration.Service.Tests/BusinessLogic/RegistrationBusinessLogicTest.cs index adcb010543..e8e555a552 100644 --- a/tests/registration/Registration.Service.Tests/BusinessLogic/RegistrationBusinessLogicTest.cs +++ b/tests/registration/Registration.Service.Tests/BusinessLogic/RegistrationBusinessLogicTest.cs @@ -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() + .With(x => x.IsUserOfCompany, true) + .Create(); + + A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A._, companyId)) + .Returns(existingData); + + A.CallTo(() => _companyRepository.AttachAndModifyCompany(A._, A>._, A>._)) + .Invokes((Guid companyId, Action? initialize, Action 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._, A>._, A>._)) + .MustHaveHappenedOnceExactly(); + A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly(); + + company.Should().NotBeNull(); + company.Should().Match(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(); + 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() + .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!, @@ -642,10 +703,12 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany() var existingData = _fixture.Build() .With(x => x.IsUserOfCompany, true) + .With(x => x.Name, "Test Company") .Create(); A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A._, companyId)) .Returns(existingData); + A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)); A.CallTo(() => _companyRepository.AttachAndModifyCompany(A._, A>._, A>._)) .Invokes((Guid companyId, Action? initialize, Action modify) => @@ -662,6 +725,7 @@ public async Task SetCompanyWithAddressAsync__WithExistingBpn_ModifiesCompany() A.CallTo(() => _companyRepository.AttachAndModifyCompany(A._, A>._, A>._)) .MustHaveHappenedOnceExactly(); A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly(); + A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)).MustHaveHappenedOnceExactly(); company.Should().NotBeNull(); company.Should().Match(c => @@ -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(); + 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() + .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() + .With(x => x.IsUserOfCompany, true) + .With(x => x.Name, "Test Company") + .Create(); + + A.CallTo(() => _applicationRepository.GetCompanyApplicationDetailDataAsync(applicationId, A._, companyId)) + .Returns(existingData); + A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)); + + A.CallTo(() => _companyRepository.AttachAndModifyCompany(A._, A>._, A>._)) + .Invokes((Guid companyId, Action? initialize, Action 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._, A>._, A>._)) + .MustHaveHappenedOnceExactly(); + A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly(); + A.CallTo(() => _userProvisioningService.UpdateCompanyNameInIdentityProvider(identityData.IdentityId, companyData.Name)).MustNotHaveHappened(); + + company.Should().NotBeNull(); + company.Should().Match(c => + c.Id == companyId && + c.Name == companyData.Name && + c.Shortname == companyData.ShortName && + c.BusinessPartnerNumber == companyData.BusinessPartnerNumber); + } + + [Theory] [InlineData(null)] [InlineData("")] @@ -700,7 +829,7 @@ public async Task SetCompanyWithAddressAsync_ModifyCompany(string? bpn) var sut = new RegistrationBusinessLogic( _options, null!, - null!, + _userProvisioningService, null!, _portalRepositories, null!, @@ -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); @@ -776,7 +905,7 @@ public async Task SetCompanyWithAddressAsync_WithoutInitialCompanyAddress_Create var sut = new RegistrationBusinessLogic( _options, null!, - null!, + _userProvisioningService, null!, _portalRepositories, null!, @@ -865,7 +994,7 @@ public async Task SetCompanyWithAddressAsync_WithInitialCompanyAddress_ModifyAdd var sut = new RegistrationBusinessLogic( _options, null!, - null!, + _userProvisioningService, null!, _portalRepositories, null!, @@ -974,7 +1103,7 @@ public async Task SetCompanyWithAddressAsync_WithUniqueIdentifiers_CreateModifyD var sut = new RegistrationBusinessLogic( _options, null!, - null!, + _userProvisioningService, null!, _portalRepositories, null!,