public ReportCodeResult()
        {
            _userTask = new Assignment
            {
                UserId = _upload.UserId,
                TaskId = _task.Id,
            };

            _task.Tests = new List <Data.Models.TaskModels.Test>
            {
                new Data.Models.TaskModels.Test
                {
                    Id = Guid.NewGuid()
                },
                new Data.Models.TaskModels.Test
                {
                    Id = Guid.NewGuid()
                }
            };

            _result = new TestingResponse
            {
                UploadId             = _upload.Id.ToString(),
                Status               = "ResultStatus",
                Message              = "ResultMessage",
                SuccessfulTestsCount = 1,
                FailedTestsCount     = 1,
                TestingFailed        = false
            };
        }
Exemple #2
0
        public Process()
        {
            _testingResponse = new TestingResponse
            {
                UploadId = _upload.Id.ToString()
            };

            _processorMock =
                new Mock <Lightest.TestingService.DefaultServices.UploadProcessor>(_upload, _uploadData, _server, _context);

            _processorMock.Setup(p => p.CacheChecker()).ThrowsAsync(new Exception());

            _processorMock.Setup(p => p.SendData()).ReturnsAsync(_testingResponse);

            _processorMock.Setup(p => p.ReportCodeResult(It.IsAny <TestingResponse>()))
            .ThrowsAsync(new Exception());
            _processorMock.Setup(p => p.ReportCodeResult(_testingResponse)).Returns(Task.CompletedTask);
        }
        public async Task UploadSent()
        {
            var response = new TestingResponse
            {
                UploadId = _upload.Id.ToString()
            };

            _transferService.Setup(ts => ts.SendUpload(It.Is <TestingRequest>(
                                                           tr => tr.UploadId == _upload.Id.ToString() && tr.TimeLimit == _taskLanguage.TimeLimit &&
                                                           tr.MemoryLimit == _taskLanguage.MemoryLimit && tr.CheckerId == _task.CheckerId.ToString() &&
                                                           tr.CodeFile.FileName.EndsWith(_language.Extension) && tr.CodeFile.Code == _uploadData.Code &&
                                                           tr.Tests.Count == 2)))
            .ReturnsAsync(response);
            await SetUpData();

            var result = await _uploadProcessor.SendData();

            var upload = _context.Uploads.First(u => u.Id == _upload.Id);

            Assert.Equal(UploadStatus.Testing, upload.Status);
            Assert.Equal(response, result);
        }
        public virtual async Task ReportCodeResult(TestingResponse result)
        {
            var uploadId = Guid.Parse(result.UploadId);
            var userTask = await _context.UserTasks
                           .SingleOrDefaultAsync(u => u.UserId == _upload.UserId &&
                                                 u.TaskId == _upload.TaskId);

            var totalTests        = _upload.Task.Tests.Count;
            var maxPoints         = _upload.Task.Points;
            var successfulPercent = (double)result.SuccessfulTestsCount / totalTests;

            _upload.Points  = successfulPercent * maxPoints;
            _upload.Status  = result.Status;
            _upload.Message = result.Message;
            if (userTask?.HighScore < _upload.Points)
            {
                userTask.HighScore = _upload.Points;
                if (result.SuccessfulTestsCount == totalTests)
                {
                    userTask.Completed = true;
                }
            }
            await _context.SaveChangesAsync();
        }