public async Task ShouldReturnNull_WhenReferralCreateFails()
        {
            // Arrange
            var referralClient = new Mock <IReferralClient>();

            referralClient.Setup(c => c.ReferralApi.GetAsync(It.IsAny <string>()))
            .ReturnsAsync(new ReferralResultResponse()
            {
                ReferralCode = null,
                ErrorCode    = ReferralErrorCodes.ReferralNotFound
            });

            referralClient.Setup(c => c.ReferralApi.PostAsync(It.IsAny <ReferralCreateRequest>()))
            .ReturnsAsync(new ReferralCreateResponse()
            {
                ReferralCode = null
            });

            var service = new ReferralService(referralClient.Object);

            // Act
            var result = await service.GetOrCreateReferralCodeAsync("123");

            // Assert
            Assert.Null(result);
        }
        public async Task ShouldGetReferralCode_WhenReferralCodeExits()
        {
            // Arrange
            var referralClient = new Mock <IReferralClient>();
            var referralCode   = "refcod";

            referralClient.Setup(c => c.ReferralApi.GetAsync(It.IsAny <string>()))
            .ReturnsAsync(new ReferralResultResponse()
            {
                ReferralCode = referralCode
            });

            var service = new ReferralService(referralClient.Object);

            // Act
            var result = await service.GetOrCreateReferralCodeAsync("123");

            // Assert
            Assert.Equal(referralCode, result);
        }