public async Task <IStateData> Create(IClaptrapIdentity identity)
        {
            var seatId   = SeatId.FromSeatId(identity.Id);
            var stations = await _trainInfoRepository.GetStationsAsync(seatId.TrainId);

            var seatInfo = SeatInfo.Create(stations);

            return(seatInfo);
        }
示例#2
0
        public async Task Normal()
        {
            var seatInfo       = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());
            var claptrapDesign = ActorTestHelper.GetDesign(typeof(SeatActor));

            using var mocker = claptrapDesign.CreateAutoMock("123", seatInfo);

            var actor  = mocker.Create <SeatActor>();
            var reqId1 = "newbe36524-1";
            await actor.TakeSeatAsync(1000, 1001, reqId1);
        }
示例#3
0
        public void StationMismatched()
        {
            var seatInfo       = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());
            var claptrapDesign = ActorTestHelper.GetDesign(typeof(SeatActor));

            using var mocker = claptrapDesign.CreateAutoMock("123", seatInfo);
            var          actor  = mocker.Create <SeatActor>();
            const string reqId1 = "newbe36524-1";

            Assert.ThrowsAsync <StationNotFoundException>(()
                                                          => actor.TakeSeatAsync(1001, 1000, reqId1));
        }
示例#4
0
        public void AlreadyTaken()
        {
            var seatInfo = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());

            seatInfo.RequestIds[0] = "taken";
            var claptrapDesign = ActorTestHelper.GetDesign(typeof(SeatActor));

            using var mocker = claptrapDesign.CreateAutoMock("123", seatInfo);
            var          actor  = mocker.Create <SeatActor>();
            const string reqId1 = "newbe36524-1";

            Assert.ThrowsAsync <SeatHasBeenTakenException>(()
                                                           => actor.TakeSeatAsync(1000, 1002, reqId1));
        }
示例#5
0
        public void StationMismatched()
        {
            using var mocker = AutoMock.GetStrict();
            var seatInfo = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());

            mocker.Mock <IClaptrapGrainCommonService>()
            .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data)
            .Returns(seatInfo);
            var grain = mocker.Create <SeatGrain>();

            grain.SeatId = 123;
            const string reqId1 = "newbe36524-1";

            Assert.ThrowsAsync <StationNotFoundException>(()
                                                          => grain.TakeSeatAsync(1001, 1000, reqId1));
        }
示例#6
0
        public async Task Normal()
        {
            using var mocker = AutoMock.GetStrict();
            var seatInfo = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());

            mocker.Mock <IClaptrapGrainCommonService>()
            .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data)
            .Returns(seatInfo);
            mocker.MockEventHandling <TakeSeatEvent>(ClaptrapCodes.TakeSeatEvent);

            var grain = mocker.Create <SeatGrain>();

            grain.SeatId = 123;
            var reqId1 = "newbe36524-1";
            await grain.TakeSeatAsync(1000, 1001, reqId1);
        }
        public async Task TakeMore()
        {
            using var mocker        = AutoMock.GetStrict();
            await using var handler = mocker.Create <TakeSeatEventHandler>();
            var seatInfo      = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());
            var reqId1        = "newbe36524-1";
            var takeSeatEvent = new TakeSeatEvent
            {
                RequestId     = reqId1,
                FromStationId = 1000,
                ToStationId   = 1002
            };
            await handler.HandleEvent(seatInfo, takeSeatEvent, default);

            seatInfo.RequestIds.Should().BeEquivalentTo(reqId1, reqId1, string.Empty);
        }
示例#8
0
        public void AlreadyTaken()
        {
            using var mocker = AutoMock.GetStrict();
            var seatInfo = SeatInfo.Create(Enumerable.Range(1000, 4).ToList());

            seatInfo.RequestIds[0] = "taken";
            mocker.Mock <IClaptrapGrainCommonService>()
            .Setup(x => x.ClaptrapAccessor.Claptrap.State.Data)
            .Returns(seatInfo);
            var grain = mocker.Create <SeatGrain>();

            grain.SeatId = 123;
            const string reqId1 = "newbe36524-1";

            Assert.ThrowsAsync <SeatHasBeenTakenException>(()
                                                           => grain.TakeSeatAsync(1000, 1002, reqId1));
        }