示例#1
0
        public async Task <RemovedReason> GetRemovedReason(Guid organisationId)
        {
            var connectionString = _configuration.SqlConnectionString;

            using (var connection = new SqlConnection(connectionString))
            {
                if (connection.State != ConnectionState.Open)
                {
                    await connection.OpenAsync();
                }

                var sql = "select JSON_QUERY(OrganisationData, '$.RemovedReason') FROM [Organisations] " +
                          "WHERE Id = @organisationId";
                var results = await connection.QueryAsync <string>(sql, new { organisationId });

                var resultJson = results.FirstOrDefault();
                if (resultJson == null)
                {
                    RemovedReason nullResult = null;
                    return(await Task.FromResult(nullResult));
                }

                return(JsonConvert.DeserializeObject <RemovedReason>(resultJson));
            }
        }
        public void Reason_data_json_parses_to_object()
        {
            var reasonJson =
                "{\"Id\":5,\"Reason\":\"Inadequate Ofsted grade\",\"Description\":null,\"CreatedBy\":\"System\",\"CreatedAt\":\"2019-02-11 15:47:23\",\"UpdatedBy\":null,\"Status\":\"Live\"}";

            RemovedReason reasonData = JsonConvert.DeserializeObject <RemovedReason>(reasonJson);

            reasonData.Should().NotBeNull();
            reasonData.Id.Should().Be(5);
            reasonData.Reason.Should().Be("Inadequate Ofsted grade");
            reasonData.CreatedAt.Year.Should().Be(2019);
            reasonData.CreatedAt.Month.Should().Be(2);
            reasonData.CreatedAt.Day.Should().Be(11);
            reasonData.Status.Should().Be("Live");
        }
示例#3
0
        private void OnRemoved(KeyType Key, ValueType Value, RemovedReason Reason)
        {
            CacheItemEventHandler <KeyType, ValueType> h = this.Removed;

            if (h != null)
            {
                try
                {
                    h(this, new CacheItemEventArgs <KeyType, ValueType>(Key, Value, Reason));
                }
                catch (Exception ex)
                {
                    Log.Critical(ex);
                }
            }
        }
        public void Handler_accepts_change_from_removed_to_different_removed_reason()
        {
            _repository.Setup(x => x.GetOrganisationStatus(It.IsAny <Guid>())).ReturnsAsync(OrganisationStatus.Removed);
            RemovedReason existingReason = new RemovedReason {
                Id = 1, Reason = "test reason"
            };

            _repository.Setup(x => x.GetRemovedReason(It.IsAny <Guid>())).ReturnsAsync(existingReason);
            _request.OrganisationStatusId = OrganisationStatus.Removed;

            _updateRepository.Setup(x =>
                                    x.UpdateOrganisationStatus(It.IsAny <Guid>(), It.IsAny <int>(), It.IsAny <string>()))
            .ReturnsAsync(true);

            _updateRepository.Setup(x => x.WriteFieldChangesToAuditLog(It.IsAny <AuditData>())).ReturnsAsync(true).Verifiable();

            _updateRepository.Setup(x => x.UpdateStartDate(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <string>())).ReturnsAsync(true).Verifiable();
            _updateRepository.Setup(x => x.UpdateRemovedReason(It.IsAny <Guid>(), It.IsAny <int?>(), It.IsAny <string>())).ReturnsAsync(true).Verifiable();

            var fieldChanges = new List <AuditLogEntry>();

            fieldChanges.Add(new AuditLogEntry {
                FieldChanged = AuditLogField.RemovedReason, NewValue = "Breach", PreviousValue = "Other"
            });
            _auditLogService.Setup(x => x.AuditOrganisationStatus(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int?>()))
            .Returns(new AuditData {
                FieldChanges = fieldChanges
            });
            var result = _handler.Handle(_request, new CancellationToken()).GetAwaiter().GetResult();

            result.Should().BeTrue();

            _updateRepository.Verify(x => x.UpdateStartDate(It.IsAny <Guid>(), It.IsAny <DateTime>(), It.IsAny <string>()), Times.Never);
            _updateRepository.Verify(x => x.UpdateRemovedReason(It.IsAny <Guid>(), It.IsAny <int?>(), It.IsAny <string>()), Times.Once);
            _updateRepository.Verify(x => x.WriteFieldChangesToAuditLog(It.IsAny <AuditData>()), Times.Once);
            _eventsRepository.Verify(x => x.AddOrganisationStatusEventsFromOrganisationId(It.IsAny <Guid>(), It.IsAny <int>(), It.IsAny <DateTime>()), Times.Never);
        }
        public void Before_each_test()
        {
            _request = new UpdateOrganisationStatusRequest
            {
                OrganisationId       = Guid.NewGuid(),
                OrganisationStatusId = 0,
                UpdatedBy            = "unit test",
                RemovedReasonId      = null
            };

            _logger = new Mock <ILogger <UpdateOrganisationStatusHandler> >();

            _validator = new Mock <IOrganisationValidator>();
            _validator.Setup(x => x.IsValidProviderTypeId(It.IsAny <int>())).Returns(true);
            _validator.Setup(x => x.IsValidOrganisationTypeIdForProvider(It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(true);
            _validator.Setup(x => x.IsValidStatusId(It.IsAny <int>())).Returns(true);
            _validator.Setup(x => x.IsValidOrganisationStatusIdForOrganisation(It.IsAny <int>(), It.IsAny <Guid>())).Returns(true);

            _updateRepository     = new Mock <IUpdateOrganisationRepository>();
            _lookupDataRepository = new Mock <ILookupDataRepository>();
            _repository           = new Mock <IOrganisationRepository>();
            _eventsRepository     = new Mock <IEventsRepository>();

            var activeStatus = new OrganisationStatus {
                Id = 1, Status = "Active"
            };

            _lookupDataRepository.Setup(x => x.GetOrganisationStatus(1)).ReturnsAsync(activeStatus);
            var removedStatus = new OrganisationStatus {
                Id = 0, Status = "Removed"
            };

            _lookupDataRepository.Setup(x => x.GetOrganisationStatus(0)).ReturnsAsync(removedStatus);
            var notTakingOnStatus = new OrganisationStatus {
                Id = 2, Status = "Active - not taking on"
            };

            _lookupDataRepository.Setup(x => x.GetOrganisationStatus(2)).ReturnsAsync(notTakingOnStatus);
            var onboardingStatus = new OrganisationStatus {
                Id = 3, Status = "On-boarding"
            };

            _lookupDataRepository.Setup(x => x.GetOrganisationStatus(3)).ReturnsAsync(onboardingStatus);

            _eventsRepository
            .Setup((x => x.AddOrganisationStatusEventsFromOrganisationId(It.IsAny <Guid>(), It.IsAny <int>(),
                                                                         It.IsAny <DateTime>()))).ReturnsAsync(true);
            RemovedReason nullReason = null;

            _repository.Setup(x => x.GetRemovedReason(It.IsAny <Guid>())).ReturnsAsync(nullReason);
            _auditLogService = new Mock <IAuditLogService>();
            _auditLogService.Setup(x => x.CreateAuditData(It.IsAny <Guid>(), It.IsAny <string>()))
            .Returns(new AuditData {
                FieldChanges = new List <AuditLogEntry>()
            });
            _auditLogService.Setup(x => x.AuditOrganisationStatus(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int?>()))
            .Returns(new AuditData {
                FieldChanges = new List <AuditLogEntry>()
            });
            _handler = new UpdateOrganisationStatusHandler(_logger.Object, _validator.Object,
                                                           _updateRepository.Object,
                                                           _lookupDataRepository.Object, _repository.Object,
                                                           _auditLogService.Object, _eventsRepository.Object);
        }
 protected override void ParseInternal(BinaryReader reader)
 {
     ConnId        = reader.ReadUInt32();
     RemovedReason = (RemovedReason)reader.ReadByte();
 }
 internal CacheItemEventArgs(KeyType Key, ValueType Value, RemovedReason Reason)
 {
     this.key    = Key;
     this.value  = Value;
     this.reason = Reason;
 }
示例#8
0
 public static void TestGetData_OnRemovedCallback(string key, object value, RemovedReason reason)
 {
     Console.WriteLine(String.Format("CacheItemRemoved key:{0} reason:{1}", key, reason));
 }