public async Task UpdateOrganisationDetailsHandler_WithValidData_FetchesOrganisationAndUpdatesAndSaves() { // Arrange OrganisationData organisationData = new OrganisationData(); organisationData.Id = new Guid("9a310218-311b-460d-bd50-9d246c237dcc"); organisationData.OrganisationType = OrganisationType.RegisteredCompany; organisationData.Name = "CompanyName"; organisationData.CompanyRegistrationNumber = "123456789"; organisationData.OrganisationName = "CompanyName"; organisationData.BusinessAddress = new Core.Shared.AddressData(); organisationData.BusinessAddress.Address1 = "Address1"; organisationData.BusinessAddress.Address2 = "Address2"; organisationData.BusinessAddress.TownOrCity = "Town"; organisationData.BusinessAddress.CountyOrRegion = "County"; organisationData.BusinessAddress.Postcode = "Postcode"; organisationData.BusinessAddress.CountryId = new Guid("79b70dfb-bbfd-4801-9849-880f66ee48e4"); organisationData.BusinessAddress.Telephone = "012345678"; organisationData.BusinessAddress.Email = "*****@*****.**"; UpdateOrganisationDetails request = new UpdateOrganisationDetails(organisationData); IOrganisationDetailsDataAccess dataAccess = A.Fake<IOrganisationDetailsDataAccess>(); IWeeeAuthorization weeeAuthorization = A.Fake<IWeeeAuthorization>(); Organisation organisation = A.Dummy<Organisation>(); A.CallTo(() => dataAccess.FetchOrganisationAsync(new Guid("9a310218-311b-460d-bd50-9d246c237dcc"))) .Returns(organisation); Country country = new Country( new Guid("79b70dfb-bbfd-4801-9849-880f66ee48e4"), "Name"); A.CallTo(() => dataAccess.FetchCountryAsync(new Guid("79b70dfb-bbfd-4801-9849-880f66ee48e4"))) .Returns(country); UpdateOrganisationDetailsHandler handler = new UpdateOrganisationDetailsHandler(dataAccess, weeeAuthorization); // Act bool result = await handler.HandleAsync(request); // Assert A.CallTo(() => dataAccess.FetchOrganisationAsync(new Guid("9a310218-311b-460d-bd50-9d246c237dcc"))) .MustHaveHappened(Repeated.Exactly.Once); Assert.Equal("CompanyName", organisation.Name); Assert.Equal("123456789", organisation.CompanyRegistrationNumber); Assert.Equal("Address1", organisation.BusinessAddress.Address1); Assert.Equal("Address2", organisation.BusinessAddress.Address2); Assert.Equal("Town", organisation.BusinessAddress.TownOrCity); Assert.Equal("County", organisation.BusinessAddress.CountyOrRegion); Assert.Equal("Postcode", organisation.BusinessAddress.Postcode); Assert.Equal(new Guid("79b70dfb-bbfd-4801-9849-880f66ee48e4"), organisation.BusinessAddress.Country.Id); Assert.Equal("012345678", organisation.BusinessAddress.Telephone); Assert.Equal("*****@*****.**", organisation.BusinessAddress.Email); A.CallTo(() => dataAccess.SaveAsync()) .MustHaveHappened(Repeated.Exactly.Once); Assert.Equal(result, true); }
public async Task HandleAsync_WithValidData_FetchesOrganisationAndUpdatesAndSaves() { // Arrange OrganisationData organisationData = new OrganisationData(); organisationData.Id = new Guid("93646500-85A1-4F9D-AE18-73265426EF40"); organisationData.Contact = new ContactData(); organisationData.Contact.FirstName = "FirstName"; organisationData.Contact.LastName = "LastName"; organisationData.Contact.Position = "Position"; organisationData.OrganisationAddress = new Core.Shared.AddressData(); organisationData.OrganisationAddress.Address1 = "Address1"; organisationData.OrganisationAddress.Address2 = "Address2"; organisationData.OrganisationAddress.TownOrCity = "Town"; organisationData.OrganisationAddress.CountyOrRegion = "County"; organisationData.OrganisationAddress.Postcode = "Postcode"; organisationData.OrganisationAddress.CountryId = new Guid("1AF4BB2F-D2B0-41EA-BFD8-B83764C1ECBC"); organisationData.OrganisationAddress.Telephone = "012345678"; organisationData.OrganisationAddress.Email = "*****@*****.**"; UpdateOrganisationContactDetails request = new UpdateOrganisationContactDetails(organisationData); IWeeeAuthorization authorization = A.Dummy<IWeeeAuthorization>(); IOrganisationDetailsDataAccess dataAccess = A.Fake<IOrganisationDetailsDataAccess>(); IWeeeEmailService weeeEmailService = A.Dummy<IWeeeEmailService>(); Organisation organisation = A.Dummy<Organisation>(); A.CallTo(() => dataAccess.FetchOrganisationAsync(new Guid("93646500-85A1-4F9D-AE18-73265426EF40"))) .Returns(organisation); Country country = new Country( new Guid("1AF4BB2F-D2B0-41EA-BFD8-B83764C1ECBC"), "Name"); A.CallTo(() => dataAccess.FetchCountryAsync(new Guid("1AF4BB2F-D2B0-41EA-BFD8-B83764C1ECBC"))) .Returns(country); UpdateOrganisationContactDetailsHandler handler = new UpdateOrganisationContactDetailsHandler(authorization, dataAccess, weeeEmailService); // Act bool result = await handler.HandleAsync(request); // Assert A.CallTo(() => dataAccess.FetchOrganisationAsync(new Guid("93646500-85A1-4F9D-AE18-73265426EF40"))) .MustHaveHappened(Repeated.Exactly.Once); Assert.Equal("FirstName", organisation.Contact.FirstName); Assert.Equal("LastName", organisation.Contact.LastName); Assert.Equal("Position", organisation.Contact.Position); Assert.Equal("Address1", organisation.OrganisationAddress.Address1); Assert.Equal("Address2", organisation.OrganisationAddress.Address2); Assert.Equal("Town", organisation.OrganisationAddress.TownOrCity); Assert.Equal("County", organisation.OrganisationAddress.CountyOrRegion); Assert.Equal("Postcode", organisation.OrganisationAddress.Postcode); Assert.Equal(new Guid("1AF4BB2F-D2B0-41EA-BFD8-B83764C1ECBC"), organisation.OrganisationAddress.Country.Id); Assert.Equal("012345678", organisation.OrganisationAddress.Telephone); Assert.Equal("*****@*****.**", organisation.OrganisationAddress.Email); A.CallTo(() => dataAccess.SaveAsync()) .MustHaveHappened(Repeated.Exactly.Once); }
public async Task HandleAsync_DetailsChanged_SendNotificationTrue_MatchingScheme_SendsChangeEmail() { // Arrange var authorization = A.Dummy<IWeeeAuthorization>(); var dataAccess = A.Fake<IOrganisationDetailsDataAccess>(); var weeeEmailService = A.Dummy<IWeeeEmailService>(); var handler = new UpdateOrganisationContactDetailsHandler(authorization, dataAccess, weeeEmailService); var contact = new Contact("FirstName", "LastName", "Position"); var countryId = Guid.NewGuid(); var country = new Country(countryId, "Country"); var organisationAddress = new Address("Address1", "Address2", "TownOrCity", "CountyOrRegion", "Postcode", country, "Telephone", "Email"); var organisation = A.Fake<Organisation>(); A.CallTo(() => organisation.Contact) .Returns(contact); A.CallTo(() => organisation.OrganisationAddress) .Returns(organisationAddress); A.CallTo(() => dataAccess.FetchOrganisationAsync(A<Guid>._)) .Returns(organisation); A.CallTo(() => dataAccess.FetchCountryAsync(countryId)) .Returns(country); var newContactDetails = new ContactData { FirstName = "FirstName", LastName = "LastName", Position = "Position" }; var newOrganisationAddress = new AddressData { Address1 = "New Address1", Address2 = "New Address2", CountryId = countryId, CountyOrRegion = "CountyOrRegion", Email = "Email", Postcode = "Postcode", Telephone = "Telephone", TownOrCity = "TownOrCity" }; var organisationId = Guid.NewGuid(); var organisationData = new OrganisationData { Id = organisationId, Contact = newContactDetails, OrganisationAddress = newOrganisationAddress }; var request = new UpdateOrganisationContactDetails(organisationData, true); var scheme = A.Fake<Scheme>(); A.CallTo(() => scheme.SchemeName) .Returns("Test Scheme Name"); var competentAuthority = A.Fake<UKCompetentAuthority>(); A.CallTo(() => competentAuthority.Email) .Returns("*****@*****.**"); A.CallTo(() => scheme.CompetentAuthority) .Returns(competentAuthority); A.CallTo(() => dataAccess.FetchSchemeAsync(organisationId)) .Returns(scheme); // Act await handler.HandleAsync(request); // Assert A.CallTo(() => weeeEmailService.SendOrganisationContactDetailsChanged("*****@*****.**", "Test Scheme Name")) .MustHaveHappened(); }
public async Task HandleAsync_WithOrganisationAddressAndContactDetailsUnchanged_SendNotificationTrue_DoesNotSendChangeEmail() { // Arrange var authorization = A.Dummy<IWeeeAuthorization>(); var dataAccess = A.Fake<IOrganisationDetailsDataAccess>(); var weeeEmailService = A.Dummy<IWeeeEmailService>(); var handler = new UpdateOrganisationContactDetailsHandler(authorization, dataAccess, weeeEmailService); var contact = new Contact("FirstName", "LastName", "Position"); var countryId = Guid.NewGuid(); var country = new Country(countryId, "Country"); var organisationAddress = new Address("Address1", "Address2", "TownOrCity", "CountyOrRegion", "Postcode", country, "Telephone", "Email"); var organisation = A.Fake<Organisation>(); A.CallTo(() => organisation.Contact) .Returns(contact); A.CallTo(() => organisation.OrganisationAddress) .Returns(organisationAddress); A.CallTo(() => dataAccess.FetchOrganisationAsync(A<Guid>._)) .Returns(organisation); A.CallTo(() => dataAccess.FetchCountryAsync(countryId)) .Returns(country); var newContactDetails = new ContactData { FirstName = "FirstName", LastName = "LastName", Position = "Position" }; var newOrganisationAddress = new AddressData { Address1 = "Address1", Address2 = "Address2", CountryId = countryId, CountyOrRegion = "CountyOrRegion", Email = "Email", Postcode = "Postcode", Telephone = "Telephone", TownOrCity = "TownOrCity" }; var organisationData = new OrganisationData { Contact = newContactDetails, OrganisationAddress = newOrganisationAddress }; var request = new UpdateOrganisationContactDetails(organisationData, true); // Act await handler.HandleAsync(request); // Assert A.CallTo(() => weeeEmailService.SendOrganisationContactDetailsChanged(A<string>._, A<string>._)) .MustNotHaveHappened(); }