public void Should_NotBeAbleTo_DockInAnOccupiedSpace()
        {
            var dockingStation = new DockingStation(2);
            var bike           = new Bike();

            dockingStation.Dock(bike, 1);

            Assert.Throws <Exception>(() => dockingStation.Dock(bike, 1));
        }
        public void Should_NotBeAbleToDock_OutsideOfLocation()
        {
            var dockingStation = new DockingStation(1);
            var bike           = new Bike();

            Assert.Throws <Exception>(() => dockingStation.Dock(bike, 1));
        }
        public void Should_BeAbleTo_ReleaseBike()
        {
            var dockingStation = new DockingStation(1);
            var bike           = new Bike();

            dockingStation.Dock(bike, 0);

            Assert.That(dockingStation.ReleaseBike(0), Is.Not.Null);
        }
        public void Should_BeAbleTo_DockABike()
        {
            var dockingStation = new DockingStation(2);
            var bike           = new Bike();

            dockingStation.Dock(bike, 1);

            Assert.That(dockingStation.BikeStore, Is.Not.Empty);
        }
        public void Should_LogBike_ReleaseTime()
        {
            var bike           = new Bike();
            var dockingStation = new DockingStation(1);

            dockingStation.Dock(bike, 0);
            dockingStation.ReleaseBike(0);

            Assert.That(dockingStation.BikeLogItem.ReleaseTime, Is.EqualTo(DateTime.Now.ToString("HH:mm")));
        }
        public void Should_BeAbleTo_ReportABikeAsBroken()
        {
            var dockingStation = new DockingStation(2);
            var bike           = new Bike();

            dockingStation.Dock(bike, 1);
            dockingStation.ReportBroken(1);

            Assert.That(bike.Working, Is.False);
        }
        public void Should_ReleaseTheSameBikeWhichOccupiesTheSpace()
        {
            var dockingStation = new DockingStation(1);
            var bike           = new Bike();

            dockingStation.Dock(bike, 0);
            var bike2 = dockingStation.ReleaseBike(0);

            Assert.That(bike, Is.EqualTo(bike2));
        }
        public void Should_OnlyRealeaseBike_IfOneAvailableInTheSpace()
        {
            var dockingStation = new DockingStation(1);
            var bike           = new Bike();

            dockingStation.Dock(bike, 0);
            dockingStation.ReleaseBike(0);

            Assert.Throws <Exception>(() => dockingStation.ReleaseBike(0));
        }
        public void Should_BeAbleTo_RepairBike()
        {
            var maintenance    = new Maintenance();
            var dockingStation = new DockingStation(2);
            var bike           = new Bike();

            dockingStation.Dock(bike, 1);
            dockingStation.ReportBroken(1);

            maintenance.Repair(bike);

            Assert.That(bike.Working, Is.True);
        }
        public void Should_NotBeAbleToDock_ANullBike()
        {
            var dockingStation = new DockingStation(1);

            Assert.Throws <Exception>(() => dockingStation.Dock(null, 0));
        }