public async Task GetNotApprovedAsyncMethod()
        {
            // preparation
            var models = new List <DiagnosisModel>();

            models.Add(new DiagnosisModel());
            var cosmos = new Mock <ICosmos>();

            // repeat 2
            var feed = new Mock <FeedIterator <DiagnosisModel> >();

            feed.SetupSequence(_ => _.HasMoreResults)
            .Returns(true)
            .Returns(true)
            .Returns(false);
            var feedResponse = new Mock <FeedResponse <DiagnosisModel> >();

            feedResponse.Setup(_ => _.Resource).Returns(models);
            feed.Setup(_ => _.ReadNextAsync(It.IsAny <CancellationToken>()))
            .ReturnsAsync(feedResponse.Object);
            cosmos.Setup(_ => _.Diagnosis.GetItemQueryIterator <DiagnosisModel>
                             (It.IsAny <QueryDefinition>(), It.IsAny <string>(), It.IsAny <QueryRequestOptions>()))
            .Returns(feed.Object)
            .Verifiable();
            var logger   = new Mock.LoggerMock <CosmosDiagnosisRepository>();
            var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
            // action
            var result = await instance.GetNotApprovedAsync();

            // Assert
            CollectionAssert.AreEqual(models.Concat(models).ToArray(), result);
        }
        public async Task DeleteAsyncMethod(string userUuid)
        {
            // preparation
            var model        = new DiagnosisModel();
            var itemResponse = new Mock <ItemResponse <DiagnosisModel> >();

            itemResponse.Setup(_ => _.Resource).Returns(model);
            var cosmos = new Mock <ICosmos>();

            cosmos.Setup(_ => _.Diagnosis.DeleteItemAsync <DiagnosisModel>(It.IsAny <string>(),
                                                                           It.IsAny <PartitionKey>(),
                                                                           It.IsAny <ItemRequestOptions>(),
                                                                           It.IsAny <CancellationToken>()))
            .ReturnsAsync(itemResponse.Object)
            .Verifiable();
            var logger = new Mock.LoggerMock <CosmosDiagnosisRepository>();
            var user   = new Mock <IUser>();

            user.Setup(_ => _.UserUuid).Returns(userUuid);
            var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
            // action
            await instance.DeleteAsync(user.Object);

            // Assert
        }
        public async Task SubmitDiagnosisAsyncMethod()
        {
            // preparation
            string         SubmissionNumber = "";
            DateTimeOffset timestamp        = DateTimeOffset.UtcNow;
            string         UserUuid         = "";

            TemporaryExposureKeyModel[] keys = new TemporaryExposureKeyModel[] { new TemporaryExposureKeyModel() };
            var itemResponse = new Mock <ItemResponse <DiagnosisModel> >();
            var cosmos       = new Mock <ICosmos>();

            cosmos.Setup(_ => _.Diagnosis.UpsertItemAsync
                             (It.IsAny <DiagnosisModel>(), It.IsAny <PartitionKey?>(), It.IsAny <ItemRequestOptions>(), It.IsAny <CancellationToken>()))
            .Callback <DiagnosisModel, PartitionKey?, ItemRequestOptions, CancellationToken>((m, p, i, c) =>
            {
                itemResponse.Setup(_ => _.Resource).Returns(m);
            })
            .ReturnsAsync(itemResponse.Object)
            .Verifiable();
            var logger   = new Mock.LoggerMock <CosmosDiagnosisRepository>();
            var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
            // action
            var result = await instance.SubmitDiagnosisAsync(SubmissionNumber, timestamp, UserUuid, keys);

            // Assert
            Assert.AreEqual(SubmissionNumber, result.SubmissionNumber);
            Assert.AreEqual(timestamp.ToUnixTimeSeconds(), result.Timestamp);
            Assert.AreEqual(UserUuid, result.UserUuid);
            Assert.AreEqual(UserUuid, result.id);
            CollectionAssert.AreEqual(keys, result.Keys);
        }
 public void CreateMethod()
 {
     // preparation
     var cosmos = new Mock <ICosmos>();
     var logger = new Mock.LoggerMock <CosmosDiagnosisRepository>();
     // action
     var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
 }
        public async Task GetAsyncMethod(string submissionNumber, string userUuid)
        {
            // preparation
            var model        = new DiagnosisModel();
            var itemResponse = new Mock <ItemResponse <DiagnosisModel> >();

            itemResponse.Setup(_ => _.Resource).Returns(model);
            var cosmos = new Mock <ICosmos>();

            cosmos.Setup(_ => _.Diagnosis.ReadItemAsync <DiagnosisModel>(It.IsAny <string>(),
                                                                         It.IsAny <PartitionKey>(),
                                                                         It.IsAny <ItemRequestOptions>(),
                                                                         It.IsAny <CancellationToken>()))
            .ReturnsAsync(itemResponse.Object)
            .Verifiable();
            var logger   = new Mock.LoggerMock <CosmosDiagnosisRepository>();
            var instance = new CosmosDiagnosisRepository(cosmos.Object, logger);
            // action
            var result = await instance.GetAsync(submissionNumber, userUuid);

            // Assert
            Assert.AreEqual(model, result);
        }