Exemple #1
0
        public void GetStateMachine_CacheReturnsValue_ReturnValue()
        {
            // Arrange
            var builder = new StateMachineManagerBuilder()
                          .SetDefault();

            var manager = builder.Build();

            // Act
            var stateMachineTask = manager.GetStateMachine("key");

            stateMachineTask.Wait();
            var stateMachine = stateMachineTask.Result;

            // Assert
            Assert.IsNotNull(stateMachine);
            builder.CacheAdapterMock
            .Verify(x => x.Get <IStateMachine>(It.IsAny <string>()), Times.Once);
            builder.TablesUsagePolicyMock
            .Verify(x => x.IsAvailable, Times.Never);
            builder.TablesRepositoryMock
            .Verify(x => x.GetAsync <IStateMachine>(
                        It.IsAny <string>(),
                        It.IsAny <string>()), Times.Never);
        }
Exemple #2
0
        public void DeleteStateMachine_TablesAreNotAvailable_DoNotDeleteValueFromTables()
        {
            // Arrange
            var tablesUsagePolicyMock = new Mock <ITablesUsagePolicy>();

            tablesUsagePolicyMock
            .Setup(x => x.IsAvailable)
            .Returns(false);

            var builder = new StateMachineManagerBuilder()
                          .SetDefault()
                          .SetTablesUsagePolicyMock(tablesUsagePolicyMock);

            var manager = builder.Build();

            // Act
            manager.DeleteStateMachine("key").Wait();

            // Assert
            builder.CacheAdapterMock
            .Verify(x => x.Delete(It.IsAny <string>()), Times.Once);
            builder.TablesRepositoryMock
            .Verify(x => x.DeleteAsync <IStateMachine>(
                        It.IsAny <string>(),
                        It.IsAny <string>()), Times.Never);
            builder.TablesUsagePolicyMock
            .Verify(x => x.IsAvailable, Times.Once);
        }
Exemple #3
0
        public void SetStateMachine_AllIsWell()
        {
            // Arrange
            var builder = new StateMachineManagerBuilder()
                          .SetDefault();

            var manager = builder.Build();

            // Act
            manager.SetStateMachine("key", null).Wait();

            // Assert
            builder.CacheAdapterMock
            .Verify(x => x.Set(
                        It.IsAny <string>(),
                        It.IsAny <IStateMachine>(),
                        It.IsAny <TimeSpan?>()), Times.Once);
            builder.TablesRepositoryMock
            .Verify(x => x.SetAsync(
                        It.IsAny <string>(),
                        It.IsAny <string>(),
                        It.IsAny <IStateMachine>()), Times.Once);
            builder.TablesUsagePolicyMock
            .Verify(x => x.IsAvailable, Times.Once);
        }
Exemple #4
0
        public void DeleteStateMachine_KeyIsNull_ThrowException()
        {
            // Arrange
            var stateMachineManager = new StateMachineManagerBuilder()
                                      .SetDefault()
                                      .Build();

            // Assert
            Assert.ThrowsAsync <ArgumentNullException>(() =>
                                                       stateMachineManager.DeleteStateMachine(null));
        }
Exemple #5
0
        public void GetStateMachine_CacheReturnsNull_TablesReturnsNull_ReturnNull()
        {
            // Arrange
            var cacheAdapterMock = new Mock <ICacheAdapter>();

            cacheAdapterMock
            .Setup(x => x.Get <IStateMachine>(It.IsAny <string>()))
            .Returns <IStateMachine>(null);

            var tablesRepositoryMock = new Mock <ITablesRepository>();

            tablesRepositoryMock
            .Setup(x => x.GetAsync <IStateMachine>(
                       It.IsAny <string>(),
                       It.IsAny <string>()))
            .Returns(Task.Factory.StartNew <IStateMachine>(() => null));

            var builder = new StateMachineManagerBuilder()
                          .SetDefault()
                          .SetCacheAdapterMock(cacheAdapterMock)
                          .SetTablesRepositoryMock(tablesRepositoryMock);

            var manager = builder.Build();

            // Act
            var stateMachineTask = manager.GetStateMachine("key");

            stateMachineTask.Wait();
            var stateMachine = stateMachineTask.Result;

            // Assert
            Assert.IsNull(stateMachine);
            builder.CacheAdapterMock
            .Verify(x => x.Get <IStateMachine>(It.IsAny <string>()), Times.Once);
            builder.TablesUsagePolicyMock
            .Verify(x => x.IsAvailable, Times.Once);
            builder.TablesRepositoryMock
            .Verify(x => x.GetAsync <IStateMachine>(
                        It.IsAny <string>(),
                        It.IsAny <string>()), Times.Once);
        }