public void New_NetworkDevice_Gets_Id()
        {
            Guid deviceId = Guid.NewGuid();
            string hostname = "SESM-001";
            NetworkDevice device = new NetworkDevice(deviceId, hostname);

            Assert.AreEqual(deviceId, device.AggregateId);
        }
        public void SetHostName_AppliesChange()
        {
            Guid deviceId = Guid.NewGuid();
            string hostname = "SESM-001";
            NetworkDevice device = new NetworkDevice(deviceId, hostname);
            device.SetHostname("NEW");

            Assert.AreEqual(device.hostname, "NEW");
        }
        public void SetDeviceIpAddress_AppliesChanges()
        {
            Guid deviceId = Guid.NewGuid();
            string hostname = "SESM-001";
            NetworkDevice device = new NetworkDevice(deviceId, hostname);

            string ip = "172.24.180.14";

            device.SetIpV4Address(ip);

            Assert.AreEqual(device.ipAddress.ToString(), ip);
        }
        public void SetDeviceIpAddress_ThrowsOnBadIp()
        {
            Guid deviceId = Guid.NewGuid();
            string hostname = "SESM-001";
            NetworkDevice device = new NetworkDevice(deviceId, hostname);

            string ip = "asdsd";

            Assert.Throws<Exception>(() =>
            {
                device.SetIpV4Address(ip);
            });
        }
        public void New_NetworkDevice_Has_Created_Event_Uncommitted()
        {
            Guid deviceId = Guid.NewGuid();
            string hostname = "SESM-001";
            NetworkDevice device = new NetworkDevice(deviceId, hostname);

            var events = device.UncommittedEvents();

            var expectedEvent = new NetworkDeviceCreated(deviceId, hostname);
            var actualEvent = events.First() as NetworkDeviceCreated;

            Assert.AreEqual(expectedEvent.DeviceId, actualEvent.DeviceId);
            Assert.AreEqual(expectedEvent.Hostname, actualEvent.Hostname);
        }
        public void Handle_CreateNetworkDevice_Throws_OnDuplicate_DeviceId()
        {
            var repoMock = new Mock<IDomainRepository<NetworkDevice>>();

            var deviceId = Guid.NewGuid();
            var hostname = "SESM-01";

            var networkDevice = new NetworkDevice(deviceId, hostname);

            repoMock.Setup(r => r.GetById(It.IsAny<Guid>())).Returns(networkDevice);

            NetworkDeviceCommandHandler handler = new NetworkDeviceCommandHandler(repoMock.Object);

            Assert.Throws<AggregateException>(() =>
            {
                handler.Handle(new CreateNetworkDevice(deviceId, hostname));
            });
        }