public void Create_Valid_RedirectsToIndex()
        {
            // ARRANGE
            var mock = new Mock <Repository <Asset> >();

            mock.Setup(r => r.Create(It.IsAny <Asset>())).
            Returns(new Asset
            {
                AssetId = 1,
                Model   = "123"
            });

            AssetViewModel avm = new AssetViewModel
            {
                AssetId = 1,
                Model   = "123"
            };
            AssetService assetService = new AssetService(string.Empty);

            assetService.Repository = mock.Object;
            AssetItemsController controller = new AssetItemsController();

            controller.AssetService = assetService;

            // ACT
            RedirectToRouteResult result = controller.Create(avm) as RedirectToRouteResult;

            // ASSERT
            Assert.AreEqual("action", result.RouteValues.Keys.First());
            Assert.AreEqual("Index", result.RouteValues.Values.First());
        }
        public void Index_CountAssets_HasAssets()
        {
            // ARRANGE
            var mock = new Mock <IRepository <Asset> >();

            mock.Setup(r => r.GetAll()).Returns(MultipleAssets());
            AssetService assetService = new AssetService(string.Empty);

            assetService.Repository = mock.Object;
            AssetItemsController controller = new AssetItemsController();

            controller.AssetService = assetService;

            // ACT
            ViewResult result = controller.Index() as ViewResult;
            var        model  = result.Model as IEnumerable <AssetViewModel>;

            // ASSERT
            Assert.AreEqual(2, model.Count());
        }
        public void Create_InValidModelState_ReturnsErrors()
        {
            // ARRANGE
            var          mock         = new Mock <Repository <Asset> >();
            AssetService assetService = new AssetService(string.Empty);

            assetService.Repository = mock.Object;

            AssetViewModel avm = new AssetViewModel();

            AssetItemsController controller = new AssetItemsController();

            controller.AssetService = assetService;

            controller.ModelState.Clear();
            controller.ModelState.AddModelError("Model is a required field", "Test Exception");
            // ACT
            ViewResult result = controller.Create(avm) as ViewResult;

            // ASSERT
            Assert.AreEqual(EnumHelper.Alerts.Error.ToString(), result.TempData.Keys.First());
        }
        public void Detail_ValidId_Loaded()
        {
            // ARRANGE
            var mock = new Mock <Repository <Asset> >();

            mock.Setup(r => r.Find(It.IsAny <Expression <Func <Asset, bool> > >())).Returns(
                MultipleAssets());
            AssetService assetService = new AssetService(string.Empty);

            assetService.Repository = mock.Object;
            AssetItemsController controller = new AssetItemsController();

            controller.AssetService = assetService;

            // ACT
            ViewResult result = controller.Details(1) as ViewResult;

            // ASSERT
            var model = result.Model as AssetViewModel;

            Assert.AreEqual(MultipleAssets().First().AssetId, model.AssetId);
            Assert.AreEqual(MultipleAssets().First().Model, model.Model);
        }