Example #1
0
        public void Should_restore_variables_from_repository_after_template()
        {
            // assemble
            var instanceRepository = A.Fake <IRepository <FlowInstance> >();

            A.CallTo(() => instanceRepository.Get(A <int> ._))
            .Returns(new FlowInstance
            {
                Variables = new Dictionary <string, object> {
                    { "Variable1", "Restored Value 1" }
                },
                Template = new FlowTemplate {
                    Id = 2
                }
            });

            var templateRepository = A.Fake <IRepository <FlowTemplate> >();
            var steps = new List <IStep> {
                new StartStep(), new StopStep()
            };
            var initialVariables = new Dictionary <string, object> {
                { "Variable1", "Initial Value 1" }, { "Example VariableKey 2", 2 }
            };

            A.CallTo(() => templateRepository.Get(A <int> ._)).Returns(new FlowTemplate {
                Id = 2, Steps = steps, Variables = initialVariables
            });

            // act
            var instance = new FlowInstanceFactory(templateRepository, instanceRepository);
            var sut      = instance.Restore(1);
            var result   = sut.Variables.ToList();

            // assert
            Assert.Equal(2, result.Count);
            Assert.Equal("Variable1", result[0].Key);
            Assert.Equal("Restored Value 1", result[0].Value);
            Assert.Equal("Example VariableKey 2", result[1].Key);
            Assert.Equal(2, result[1].Value);
        }