public async Task AssignsTemplateVersionAndQueuesAssignTemplateCalculationJobIfTheSuppliedTemplateVersionsDiffersToTheSpecificationVersion() { string fundingStream = NewRandomString(); string existingTemplateId = NewRandomString(); string changedTemplateId = NewRandomString(); string specificationId = NewRandomString(); string fundingPeriodId = NewRandomString(); SpecificationVersion previousSpecificationVersion = NewSpecificationVersion(_ => _.WithSpecificationId(specificationId) .WithFundingPeriodId(fundingPeriodId) .WithTemplateIds((fundingStream, existingTemplateId))); SpecificationVersion specificationVersion = previousSpecificationVersion.DeepCopy(); Reference user = NewUser(); string correlationId = NewRandomString(); GivenAllTheAssociateTemplateIdWithSpecificationCallsSucceed(); await WhenTemplateVersionChangeIsHandled(previousSpecificationVersion, specificationVersion, new Dictionary <string, string> { { fundingStream, changedTemplateId } }, user, correlationId); ThenTheProcessMappingsWasCalled(fundingStream, changedTemplateId, specificationId); AndTheAssignTemplateCalculationJobWasNotCreated(specificationId, fundingStream, fundingPeriodId, existingTemplateId); }
public async Task AssignsTemplateVersionAndQueuesAssignTemplateCalculationJobForAnyChangedTemplateVersionsInTheSpecificationVersion() { string fundingStreamOne = NewRandomString(); string fundingStreamTwo = NewRandomString(); string fundingStreamThree = NewRandomString(); string existingTemplateIdOne = NewRandomString(); string existingTemplateIdTwo = NewRandomString(); string existingTemplateIdThree = NewRandomString(); string changedTemplateIdTwo = NewRandomString(); IDictionary <string, string> assignedTemplateIds = NewAssignTemplateIds((fundingStreamOne, existingTemplateIdOne), (fundingStreamTwo, changedTemplateIdTwo)); string specificationId = NewRandomString(); string fundingPeriodId = NewRandomString(); SpecificationVersion previousSpecificationVersion = NewSpecificationVersion(_ => _.WithSpecificationId(specificationId) .WithFundingPeriodId(fundingPeriodId) .WithTemplateIds((fundingStreamOne, existingTemplateIdOne), (fundingStreamTwo, existingTemplateIdTwo), (fundingStreamThree, existingTemplateIdThree))); SpecificationVersion specificationVersion = previousSpecificationVersion.DeepCopy(); Reference user = NewUser(); string correlationId = NewRandomString(); GivenAllTheAssociateTemplateIdWithSpecificationCallsSucceed(); await WhenTemplateVersionChangeIsHandled(previousSpecificationVersion, specificationVersion, assignedTemplateIds, user, correlationId); ThenTheProcessMappingsWasCalled(fundingStreamTwo, changedTemplateIdTwo, specificationId); AndTheProcessMappingsWasNotCalled(fundingStreamTwo, existingTemplateIdTwo, specificationId); AndTheProcessMappingsWasNotCalled(fundingStreamOne, existingTemplateIdOne, specificationId); AndTheProcessMappingsWasNotCalled(fundingStreamThree, existingTemplateIdThree, specificationId); AndTheAssignTemplateCalculationJobWasCreated(user, correlationId, specificationId, fundingStreamTwo, fundingPeriodId, changedTemplateIdTwo); AndTheAssignTemplateCalculationJobWasNotCreated(user, correlationId, specificationId, fundingStreamTwo, fundingPeriodId, existingTemplateIdTwo); AndTheAssignTemplateCalculationJobWasNotCreated(user, correlationId, specificationId, fundingStreamOne, fundingPeriodId, existingTemplateIdOne); AndTheAssignTemplateCalculationJobWasNotCreated(user, correlationId, specificationId, fundingStreamOne, fundingPeriodId, existingTemplateIdThree); AndTheSpecVersionTemplateVersionsAssigned(specificationVersion, fundingStreamTwo, changedTemplateIdTwo); }