public async Task Should_Not_Return_If_Active_EntityExpirations_Exists()
        {
            var now  = new DateTime(2020, 02, 01);
            var to   = now.AddDays(1);
            var from = now.AddDays(-1);


            var valNum = "421-2222-0";

            var item = Default.Entity
                       .SetProperty(x => x.Number, valNum)
                       .WithSingleEntityExpiration(from, to)
                       .Value;


            var fakeDtp = new FakeDatetimeProvider
            {
                FakeNow = now
            };

            var fakeFactory = new FakeListQueryHandler();

            fakeFactory.QuerySource.Add(item);

            var query = GetQuery(fakeDtp, fakeFactory);

            var queryRequest = new GetAvailableEntityQuery();

            var result = await query.Handle(queryRequest);

            Assert.Empty(result.Entity);
        }
        public async Task Should_Return_If_Control_Number_Is_Valid()
        {
            var to = new DateTime(2020, 02, 01);;

            var valNum = "421-2222-0";

            var item = Default.Entity
                       .SetProperty(x => x.Number, valNum)
                       .Value;

            var fakeDtp = new FakeDatetimeProvider
            {
                FakeNow = to
            };

            var fakeFactory = new FakeListQueryHandler();

            fakeFactory.QuerySource.Add(item);

            var query = GetQuery(fakeDtp, fakeFactory);

            var queryRequest = new GetAvailableEntityQuery();

            var result = await query.Handle(queryRequest);

            var number = Assert.Single(result.Entity);

            Assert.Equal(valNum, number.Number);
        }
        public async Task Should_Throw_Exception_If_Srn_Tap_Format_Does_Not_Correct(string fakePlaceId)
        {
            var fakeFactory = new FakeListQueryHandler();

            var query = GetQuery(fakeFactory);

            await Assert.ThrowsAsync <ArgumentNullException>(() => query.CheckIfEntityPlaceExistsByIdentificator(fakePlaceId, null));
        }
        public async Task Should_Not_Find_Srn_Pool_If_PoolNumber_Does_Not_Exists()
        {
            var fakeFactory = new FakeListQueryHandler();

            var query = GetQuery(fakeFactory);

            var result = await query.CheckIfEntityPlaceExistsByIdentificator(PoolNumber, null);

            Assert.False(result);
        }
        public async Task Should_Find_Srn_Pool_If_PoolNumber_Already_Exists_And_Active()
        {
            var Ep = Default.SrnEp
                     .WithTap(PoolNumber)
                     .Value;

            var tap = Ep.SrnTaps.Single();

            var fakeFactory = new FakeListQueryHandler();

            fakeFactory.QuerySource.Add(tap);

            var query = GetQuery(fakeFactory);

            var result = await query.CheckIfEntityPlaceExistsByIdentificator(PoolNumber, null);

            Assert.True(result);
        }
        public async Task Should_Not_Find_Srn_Pool_If_PoolNumber_Already_Exists_But_Has_Inactive_Status()
        {
            var Ep = Default.SrnEp
                     .SetProperty(x => x.SrnStatus, false)
                     .WithTap(PoolNumber)
                     .Value;

            var tap = Ep.SrnTaps.Single();

            var fakeFactory = new FakeListQueryHandler();

            fakeFactory.QuerySource.Add(tap);

            var query = GetQuery(fakeFactory);

            var result = await query.CheckIfEntityPlaceExistsByIdentificator(PoolNumber, null);

            Assert.False(result);
        }
 private static GetAvailableEntityQueryHandler GetQuery(FakeDatetimeProvider fakeDtp, FakeListQueryHandler fakeQueryHandler) => new GetAvailableEntityQueryHandler(fakeDtp, fakeQueryHandler);
 private static EntityPlaceApplicationService GetQuery(FakeListQueryHandler fakeQueryHandler) => new EntityPlaceApplicationService(new FakeDatetimeProvider(), fakeQueryHandler);