public void Delete_WithInvalidWocketId_RemovesRecord()
        {
            // Arrange
            var fakeWocket1 = new Wocket { Id = 1 };
            var fakeWocket2 = new Wocket { Id = 2 };
            var fakeWocket3 = new Wocket { Id = 3 };
            var fakeStore = new List<Wocket> { fakeWocket1, fakeWocket2, fakeWocket3 };
            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.GetEnumerator()).Returns(fakeStore.GetEnumerator());

            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            // Assert
            Assert.Throws<ArgumentException>(() => repository.Delete(99));
        }
        public void GetAll_WithExistingWockets_ReturnsFullArray()
        {
            // Arrange
            var fakeWocket1 = new Wocket { Id = 1 };
            var fakeWocket2 = new Wocket { Id = 2 };
            var fakeWocket3 = new Wocket { Id = 3 };
            var fakeStore = new List<Wocket> { fakeWocket1, fakeWocket2, fakeWocket3 };
            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.GetEnumerator()).Returns(fakeStore.GetEnumerator());
            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            var result = repository.GetAll();

            // Assert
            Assert.Contains(fakeWocket1, result);
            Assert.Contains(fakeWocket2, result);
            Assert.Contains(fakeWocket3, result);
        }
        public void Delete_WithExistingWocketId_RemovesRecord()
        {
            // Arrange
            var fakeWocket1 = new Wocket { Id = 1 };
            var fakeWocket2 = new Wocket { Id = 2 };
            var fakeWocket3 = new Wocket { Id = 3 };
            var fakeStore = new List<Wocket> { fakeWocket1, fakeWocket2, fakeWocket3 };
            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.GetEnumerator()).Returns(fakeStore.GetEnumerator());
            mockObjectStore.Setup(x => x.Delete(fakeWocket1)).Verifiable();

            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            repository.Delete(fakeWocket1.Id);

            // Assert
            mockObjectStore.VerifyAll();
        }
        public void Save(Wocket wocket)
        {
            if (wocket.Id == 0)
            {
                // Getting the Id from the objectStore is optional.
                // NextId provides a static sequential integer Id.
                wocket.Id = _objectStore.NextId;
                _objectStore.Insert(wocket);
                return;
            }

            var oldWocket = GetById(wocket.Id);
            _objectStore.Replace(oldWocket, wocket);
        }
        public void Save_WithNewValidWocket_InsertsRecord()
        {
            // Arrange
            var fakeWocket1 = new Wocket { Id = 0 };
            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.Insert(fakeWocket1)).Verifiable();
            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            repository.Save(fakeWocket1);

            // Assert
            mockObjectStore.VerifyAll();
        }
        public void Save_WithExistingValidWocket_UpdatesRecord()
        {
            // Arrange
            var oldWocket = new Wocket { Id = 1, Name = "Some wocket" };
            var newWocket = new Wocket { Id = 1, Name = "Some other wocket" };
            var fakeStore = new List<Wocket> { oldWocket };

            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.GetEnumerator())
                .Returns(fakeStore.GetEnumerator());
            mockObjectStore.Setup(x => x.Replace(oldWocket, newWocket))
                .Verifiable("wocket was not replaced");

            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            repository.Save(newWocket);

            // Assert
            mockObjectStore.VerifyAll();
        }
        public void GetById_WithValidId_ReturnsObject()
        {
            // Arrange
            var fakeWocket = new Wocket { Id = 2 };
            var fakeStore = new List<Wocket> { fakeWocket };
            var mockObjectStore = new Mock<IObjectStore<Wocket>>();
            mockObjectStore.Setup(x => x.GetEnumerator()).Returns(fakeStore.GetEnumerator());
            var repository = new WocketRepository(mockObjectStore.Object);

            // Act
            var result = repository.GetById(2);

            // Assert
            Assert.AreSame(fakeWocket, result);
        }
 public ViewResult Create()
 {
     var wocket = new Wocket();
     return View("Edit", wocket);
 }
 public ActionResult Save(Wocket wocket)
 {
     try
     {
         _wocketRepository.Save(wocket);
         return RedirectToAction("Index");
     }
     catch (Exception exception)
     {
         return ShowError(exception);
     }
 }