public void given_the_requestObject_when_executePost_usecase_method_is_called_then_the_gateway_is_called_with_factory_output() // this should be 2 tests really, one to see if factory gets called, and the other to see if gateway is called, but due to using static factory method this becomes impossible to separate.
        {
            //arrange
            PostInitialProcessDocumentRequest requestObject = MatProcessDataHelper.CreatePostInitialProcessDocumentRequestObject();
            MatProcessData domainObject = ProcessDataFactory.CreateProcessDataObject(requestObject);

            mockMatGateway.Setup(g => g.PostInitialProcessDocument(It.IsAny <MatProcessData>())).Returns((MatProcessData dobj) => dobj.Id);
            //act
            processDataUseCase.ExecutePost(requestObject);

            //assert
            mockMatGateway.Verify(g => g.PostInitialProcessDocument(It.Is <MatProcessData>(d =>
                                                                                           d.ProcessType.name == requestObject.processType.name && //checking whether properties that have to be transfered from request object to domain object are present
                                                                                           d.Id == requestObject.processRef &&
                                                                                           d.ProcessType.value == requestObject.processType.value &&
                                                                                           d.ProcessDataSchemaVersion == requestObject.processDataSchemaVersion &&
                                                                                           d.DateCompleted == DateTime.MinValue && //checking whether some of the properties that factory has to generate itself are present.
                                                                                           d.ProcessStage == "Not completed"
                                                                                           )), Times.Once);
            // This checks whether the usecase calls the gateway with the output of the factory method.
        }