public void GetByName_VirtualMachineExists_RepositoryIsCalled()
        {
            // Arrange
            var machineList = new[]
            {
                new VirtualMachine {Name = "Machine1"},
                new VirtualMachine {Name = "Machine2"},
                new VirtualMachine {Name = "Machine3"}
            };

            var repository = MockRepository.GenerateMock<IVirtualMachineRepository>();
            repository.Expect(x => x.Read())
                .Repeat.Once()
                .Return(machineList.AsQueryable());

            var messenger = MockRepository.GenerateStub<IMessenger>();

            var controller = new VirtualMachinesController(repository, messenger);

            // Act
            controller.Get("Machine2");

            // Assert
            repository.VerifyAllExpectations();
        }
        public void GetByName_VirtualMachineDoesNotExist_ReturnsNull()
        {
            // Arrange
            var machineList = new[]
            {
                new VirtualMachine {Name = "Machine1"},
                new VirtualMachine {Name = "Machine2"},
                new VirtualMachine {Name = "Machine3"}
            };

            var repository = MockRepository.GenerateMock<IVirtualMachineRepository>();
            repository.Expect(x => x.Read())
                .Repeat.Once()
                .Return(machineList.AsQueryable());

            var messenger = MockRepository.GenerateStub<IMessenger>();

            var controller = new VirtualMachinesController(repository, messenger);

            // Act
            var result = controller.Get("FakeMachine");

            // Assert
            Assert.That(result, Is.Null);
        }
        public void Get_HasVirtualMachines_ReturnsList()
        {
            // Arrange
            var machineList = new[]
            {
                new VirtualMachine {Name = "Machine1"},
                new VirtualMachine {Name = "Machine2"},
                new VirtualMachine {Name = "Machine3"}
            };

            var repository = MockRepository.GenerateMock<IVirtualMachineRepository>();
            repository.Expect(x => x.Read())
                .Repeat.Once()
                .Return(machineList.AsQueryable());

            var messenger = MockRepository.GenerateStub<IMessenger>();

            var controller = new VirtualMachinesController(repository, messenger);

            // Act
            var result = controller.Get();

            // Assert
            Assert.That(result.Any(), Is.True);
            repository.VerifyAllExpectations();
        }
        public void Get_NoVirtualMachines_ReturnsEmptyList()
        {
            // Arrange
            var machineList = new VirtualMachine[0];

            var repository = MockRepository.GenerateMock<IVirtualMachineRepository>();
            repository.Expect(x => x.Read())
                .Repeat.Once()
                .Return(machineList.AsQueryable());

            var messenger = MockRepository.GenerateStub<IMessenger>();

            var controller = new VirtualMachinesController(repository, messenger);

            // Act
            var result = controller.Get();

            // Assert
            Assert.That(result.Any(), Is.False);
        }
        public void Get_HasManyVirtualMachines_ReturnsPartialList()
        {
            // Arrange
            var machineList = new[]
            {
                new VirtualMachine {Name = "Machine1"},
                new VirtualMachine {Name = "Machine2"},
                new VirtualMachine {Name = "Machine3"},
                new VirtualMachine {Name = "Machine4"},
                new VirtualMachine {Name = "Machine5"},
                new VirtualMachine {Name = "Machine6"},
                new VirtualMachine {Name = "Machine7"},
                new VirtualMachine {Name = "Machine8"},
                new VirtualMachine {Name = "Machine9"},
                new VirtualMachine {Name = "Machine10"},
                new VirtualMachine {Name = "Machine11"},
                new VirtualMachine {Name = "Machine12"},
                new VirtualMachine {Name = "Machine13"},
                new VirtualMachine {Name = "Machine14"},
                new VirtualMachine {Name = "Machine15"},
                new VirtualMachine {Name = "Machine16"},
                new VirtualMachine {Name = "Machine17"},
                new VirtualMachine {Name = "Machine18"},
                new VirtualMachine {Name = "Machine19"},
                new VirtualMachine {Name = "Machine20"},
                new VirtualMachine {Name = "Machine21"},
                new VirtualMachine {Name = "Machine22"},
                new VirtualMachine {Name = "Machine23"},
                new VirtualMachine {Name = "Machine24"},
                new VirtualMachine {Name = "Machine25"},
                new VirtualMachine {Name = "Machine26"},
                new VirtualMachine {Name = "Machine27"}
            };

            var repository = MockRepository.GenerateMock<IVirtualMachineRepository>();
            repository.Expect(x => x.Read())
                .Repeat.Once()
                .Return(machineList.AsQueryable());

            var messenger = MockRepository.GenerateStub<IMessenger>();

            var controller = new VirtualMachinesController(repository, messenger);

            // Act
            var result = controller.Get();

            // Assert
            Assert.That(result.Count(), Is.EqualTo(25));
            repository.VerifyAllExpectations();
        }