예제 #1
0
        public async Task Booking_failure_code_should_lead_to_failure_or_success_depending_on_error_code(
            BookingFailureCodes failureCode,
            bool isErrorDefined,
            bool isSuccess)
        {
            InitializeMocks();
            var service        = CreateBookingRequestExecutor();
            var booking        = new Booking();
            var problemDetails = Utility.CreateProblemDetailsWithFailureCode(isErrorDefined, failureCode);

            Utility.SetupConnectorBookFailure(_supplierConnectorMock, problemDetails);

            var result = await service.Execute(booking, default, default);
        public static void AddBookingFailureCode(this IDictionary <string, object> extensions, BookingFailureCodes failureCode)
        {
            if (extensions.TryGetValue(BookingFailureCodeKey, out _))
            {
                throw new Exception($"Key {failureCode} already exists");
            }

            extensions[BookingFailureCodeKey] = (int)failureCode;
        }
        public static bool TryGetBookingFailureCode(this IDictionary <string, object> extensions, out BookingFailureCodes failureCode)
        {
            if (!extensions.TryGetValue(BookingFailureCodeKey, out var obj))
            {
                failureCode = BookingFailureCodes.Unknown;
                return(false);
            }

            // During deserialization of ProblemDetails code is deserialized as 'long' so we need to convert it to int explicitly
            var code = Convert.ToInt32(obj);

            if (!Enum.IsDefined(typeof(BookingFailureCodes), code))
            {
                failureCode = BookingFailureCodes.Unknown;
                return(false);
            }

            failureCode = (BookingFailureCodes)code;
            return(true);
        }