예제 #1
0
        public async Task ValidateCreate_ExistingNoUpdate()
        {
            const string keyName          = "some key";
            var          userUid          = Guid.NewGuid();
            var          prefKeyUid       = Guid.NewGuid();
            var          userPrefDatabase = new UserPrefKeyDataModel
            {
                KeyName          = keyName,
                PreferenceKeyUID = prefKeyUid.ToString(),
                PreferenceJson   = "some json",
                SchemaVersion    = "1.0"
            };

            mockPrefRepo.Setup(p => p.GetUserPreference(userUid, keyName))
            .ReturnsAsync(userPrefDatabase);

            var request = new UpsertUserPreferenceRequest
            {
                PreferenceJson    = "some new json",
                PreferenceKeyUID  = prefKeyUid,
                PreferenceKeyName = userPrefDatabase.KeyName,
                SchemaVersion     = userPrefDatabase.SchemaVersion,
                TargetUserUID     = userUid
            };
            var controller = CreatePreferencesController(userUid.ToString(), false);
            var ex         = await Assert.ThrowsAsync <ServiceException>(async() => await controller.CreateUserPreference(request)) as ServiceException;

            Assert.Equal(HttpStatusCode.BadRequest, ex.Code);
            var result = ex.GetResult;

            Assert.Equal(2013, result.Code);
            Assert.Equal("User preference already exists. ", result.Message);
        }
예제 #2
0
        public async Task ValidateUserId_UserIdMatches()
        {
            const string keyName = "some key";
            var          userUid = Guid.NewGuid();

            var userPrefDatabase = new UserPrefKeyDataModel
            {
                KeyName          = keyName,
                PreferenceKeyUID = Guid.NewGuid().ToString(),
                PreferenceJson   = "some json",
                SchemaVersion    = "1.0"
            };

            mockPrefRepo.Setup(p => p.GetUserPreference(userUid, keyName))
            .ReturnsAsync(userPrefDatabase);

            var controller = CreatePreferencesController(userUid.ToString(), false);
            var result     = await controller.GetUserPreferenceV1(keyName, userUid);

            Assert.NotNull(result);
            Assert.Equal(ContractExecutionStatesEnum.ExecutedSuccessfully, result.Code);
            Assert.Equal(ContractExecutionResult.DefaultMessage, result.Message);
            Assert.Equal(userPrefDatabase.KeyName, result.PreferenceKeyName);
            Assert.Equal(userPrefDatabase.PreferenceKeyUID, result.PreferenceKeyUID.ToString());
            Assert.Equal(userPrefDatabase.PreferenceJson, result.PreferenceJson);
            Assert.Equal(userPrefDatabase.SchemaVersion, result.SchemaVersion);
        }
예제 #3
0
        public void MapUserPrefDatabaseModelToResult()
        {
            var userPref = new UserPrefKeyDataModel
            {
                KeyName          = "some preference key",
                PreferenceKeyUID = Guid.NewGuid().ToString(),
                PreferenceJson   = "some json string here",
                SchemaVersion    = "1.0"
            };

            var result = AutoMapperUtility.Automapper.Map <UserPreferenceV1Result>(userPref);

            Assert.Equal(userPref.KeyName, result.PreferenceKeyName);
            Assert.Equal(userPref.PreferenceJson, result.PreferenceJson);
            Assert.Equal(userPref.PreferenceKeyUID, result.PreferenceKeyUID.ToString());
            Assert.Equal(userPref.SchemaVersion, result.SchemaVersion);
            Assert.Equal(ContractExecutionStatesEnum.ExecutedSuccessfully, result.Code);
            Assert.Equal(ContractExecutionResult.DefaultMessage, result.Message);
        }
예제 #4
0
        public async Task CreateUserPreferenceExecutor_HappyPath()
        {
            const string keyName = "some key";
            var          userUid = Guid.NewGuid();

            var prefEvent = new CreateUserPreferenceEvent
            {
                PreferenceKeyName = keyName,
                PreferenceKeyUID  = Guid.NewGuid(),
                UserUID           = userUid,
                PreferenceJson    = "some json",
                SchemaVersion     = "1.0"
            };

            mockPrefRepo.Setup(p => p.StoreEvent(prefEvent))
            .ReturnsAsync(1);

            var userPref = new UserPrefKeyDataModel
            {
                KeyName          = keyName,
                PreferenceKeyUID = prefEvent.PreferenceKeyUID.Value.ToString(),
                PreferenceJson   = prefEvent.PreferenceJson,
                SchemaVersion    = prefEvent.SchemaVersion
            };

            mockPrefRepo.Setup(p => p.GetUserPreference(userUid, keyName))
            .ReturnsAsync(userPref);

            var executor = RequestExecutorContainerFactory.Build <CreateUserPreferenceExecutor>
                               (Logger, ServiceExceptionHandler, mockPrefRepo.Object);
            var result = await executor.ProcessAsync(prefEvent) as UserPreferenceV1Result;

            Assert.Equal(ContractExecutionStatesEnum.ExecutedSuccessfully, result.Code);
            Assert.Equal(ContractExecutionResult.DefaultMessage, result.Message);
            Assert.Equal(prefEvent.SchemaVersion, result.SchemaVersion);
            Assert.Equal(prefEvent.PreferenceJson, result.PreferenceJson);
            Assert.Equal(prefEvent.PreferenceKeyName, result.PreferenceKeyName);
            Assert.Equal(prefEvent.PreferenceKeyUID, result.PreferenceKeyUID);
        }