public void SetUp()
 {
     _mockProcessDataGateway = new Mock <IProcessDataGateway>();
     _mockDatabaseGateway    = new Mock <IDatabaseGateway>();
     _mockMongoGateway       = new Mock <IMongoGateway>();
     _classUnderTest         = new CaseRecordsUseCase(_mockProcessDataGateway.Object, _mockDatabaseGateway.Object, _mockMongoGateway.Object);
 }
        public void GenerateFilterDefinitionForDefaultCase()
        {
            const string expectedJsonQuery = "{ \"SubmissionState\" : 1, \"Deleted\" : { \"$ne\" : true } }";
            var          emptyRequest      = TestHelpers.CreateListCasesRequest();

            var response = CaseRecordsUseCase.GenerateFilterDefinition(emptyRequest);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }
        public void GenerateFilterDefinitionWithAddDeletedRecordsFilterFalseReturnsFilterWithDeletedRecordsIncludedWhetherTheyAreRequestedOrNot()
        {
            const string expectedJsonQuery                    = "{ \"SubmissionState\" : 1 }";
            const bool   includeDeletedRecordsFlag            = false;
            var          requestWithIncludeDeletedRecordsFlag = TestHelpers.CreateListCasesRequest(includeDeletedRecords: includeDeletedRecordsFlag);

            var response = CaseRecordsUseCase.GenerateFilterDefinition(requestWithIncludeDeletedRecordsFlag, addDeletedRecordsFilter: false);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }
        public void GenerateFilterDefinitionWithProvidedIncludeDeletedRecordsFlagSetToFalse()
        {
            const string expectedJsonQuery                    = "{ \"SubmissionState\" : 1, \"Deleted\" : { \"$ne\" : true } }";
            const bool   includeDeletedRecordsFlag            = false;
            var          requestWithIncludeDeletedRecordsFlag = TestHelpers.CreateListCasesRequest(includeDeletedRecords: includeDeletedRecordsFlag);

            var response = CaseRecordsUseCase.GenerateFilterDefinition(requestWithIncludeDeletedRecordsFlag);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }
        public void GenerateFilterDefinitionWithProvidedWorkerEmail()
        {
            const string expectedJsonQuery   = "{ \"CreatedBy.Email\" : \"[email protected]\", \"SubmissionState\" : 1, \"Deleted\" : { \"$ne\" : true } }";
            const string workerEmail         = "*****@*****.**";
            var          requestWithLastName = TestHelpers.CreateListCasesRequest(workerEmail: workerEmail);

            var response = CaseRecordsUseCase.GenerateFilterDefinition(requestWithLastName);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }
        public void GenerateFilterDefinitionWithProvidedLastName()
        {
            const string expectedJsonQuery   = "{ \"Residents.LastName\" : /^toastington$/i, \"SubmissionState\" : 1, \"Deleted\" : { \"$ne\" : true } }";
            const string lastName            = "toastington";
            var          requestWithLastName = TestHelpers.CreateListCasesRequest(lastName: lastName);

            var response = CaseRecordsUseCase.GenerateFilterDefinition(requestWithLastName);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }
        public void GenerateFilterDefinitionWithProvidedMosaicId()
        {
            const string expectedJsonQuery   = "{ \"Residents._id\" : 1, \"SubmissionState\" : 1, \"Deleted\" : { \"$ne\" : true } }";
            const long   mosaicId            = 1L;
            var          requestWithMosaicId = TestHelpers.CreateListCasesRequest(mosaicId: mosaicId);

            var response = CaseRecordsUseCase.GenerateFilterDefinition(requestWithMosaicId);

            response.RenderToJson().Should().Be(expectedJsonQuery);
        }