public static void SetupEachTest()
        {
            // Before each test execution we reinitialize fake DAL and businessLogic
            // so tests won't conflict between themselves
            fakeDataAccessLayer = Substitute.For <TestedMethod.IDataAccessLayer>();
            businessLogic       = new TestedMethod.BusinessLogic(fakeDataAccessLayer);
            innovator           = ItemHelper.CreateInnovator();

            fakeDataAccessLayer.NewItem(Arg.Any <string>(), Arg.Any <string>())
            .Returns(@params => ItemHelper.CreateItem((string)@params[0], (string)@params[1]));

            fakeDataAccessLayer.NewResult(Arg.Any <string>())
            .Returns(@params => innovator.newResult((string)@params[0]));

            // We use applyProcessor List to store fake AML responces
            applyProcessor = InitializeApplyProcessor();
            fakeDataAccessLayer.ApplyItem(Arg.Any <Item>())
            .Returns(@params =>
            {
                Item paramItem = (Item)@params[0];
                foreach (Func <Item, Item> processor in applyProcessor)
                {
                    Item result = processor(paramItem);
                    if (result != null)
                    {
                        return(result);
                    }
                }
                return(null);
            });
        }
        public static void SetupEachTest()
        {
            fakeDataAccessLayer = Substitute.For <TestedMethod.IDataAccessLayer>();
            innovator           = ItemHelper.CreateInnovator();

            fakeDataAccessLayer = Substitute.For <TestedMethod.IDataAccessLayer>();

            fakeDataAccessLayer.NewItem(Arg.Any <string>(), Arg.Any <string>())
            .Returns(@params => ItemHelper.CreateItem((string)@params[0], (string)@params[1]));

            fakeDataAccessLayer.NewError(Arg.Any <string>())
            .Returns(@params => innovator.newError((string)@params[0]));
        }
        public static void CheckThatInnovatorServerExceptionThrownWhenContextItemIsEmpty()
        {
            const string expectedExceptionMessage = "login_name is not defined";

            TestedMethod.BusinessLogic businessLogic = new TestedMethod.BusinessLogic(fakeDataAccessLayer);
            Innovator innovator = ItemHelper.CreateInnovator();

            Item contextItem = innovator.newItem();
            InnovatorServerException exception = Assert.Throws <InnovatorServerException>(() => businessLogic.Run(contextItem));

            Assert.AreEqual(expectedExceptionMessage, exception.Message);

            string amlOfContextItem =
                @"<AML>
					<Item type='User'>
						<login_name></login_name>
					</Item>
				</AML>"                ;

            contextItem.loadAML(amlOfContextItem);
            exception = Assert.Throws <InnovatorServerException>(() => businessLogic.Run(contextItem));
            Assert.AreEqual(expectedExceptionMessage, exception.Message);
        }