public void ReturnNoFloorIdsWhenNewlyCreated()
        {
            var probe   = CreateTestProbe();
            var manager = Sys.ActorOf(FloorManagerActor.Props());

            manager.Tell(new RequestFloorIds(1), probe.Ref);
            var recieved = probe.ExpectMsg <RespondFloorIds>();

            Assert.Equal(1, recieved.RequestId);
            Assert.Empty(recieved.FloorIds);
        }
        public void RegisterNewFloorWhenDoesNotAlreadyExists()
        {
            var probe   = CreateTestProbe();
            var manager = Sys.ActorOf(FloorManagerActor.Props());

            manager.Tell(new RequestRegisterTemperatureSensor(1, "a", "1"), probe.Ref);
            probe.ExpectMsg <RespondRegisterTemperatureSensor>(a => a.RequestId.Equals(1));

            manager.Tell(new RequestFloorIds(2), probe.Ref);
            var recieved = probe.ExpectMsg <RespondFloorIds>();

            Assert.Equal(2, recieved.RequestId);
            Assert.Single(recieved.FloorIds);
            Assert.Contains("a", recieved.FloorIds);
        }
        public async Task ReturnFloorIdsOnlyFromActiveActors()
        {
            var probe   = CreateTestProbe();
            var manager = Sys.ActorOf(FloorManagerActor.Props(), "FloorManager");

            manager.Tell(new RequestRegisterTemperatureSensor(1, "a", "1"));
            manager.Tell(new RequestRegisterTemperatureSensor(2, "b", "2"));

            var firstFloor = await Sys.ActorSelection("akka://test/user/FloorManager/floor-a")
                             .ResolveOne(TimeSpan.FromSeconds(3));

            probe.Watch(firstFloor);
            firstFloor.Tell(PoisonPill.Instance);
            probe.ExpectTerminated(firstFloor);

            manager.Tell(new RequestFloorIds(3), probe.Ref);
            var recieved = probe.ExpectMsg <RespondFloorIds>();

            Assert.Equal(3, recieved.RequestId);
            Assert.Single(recieved.FloorIds);
            Assert.Contains("b", recieved.FloorIds);
        }