public async Task CheckThatUserCanActivateBonus()
        {
            var mockSet = new Mock <DbSet <PromoActivation> >();

            var dbContextMock = new Mock <IApplicationDbContext>();

            dbContextMock.Setup(m => m.PromoActivations).Returns(mockSet.Object);

            repositoryMock = new Mock <IRepository>();
            var systemUnderTest = new Promo.Infrastructure.Services.Repository(dbContextMock.Object);

            repositoryMock.Setup(x => x.ActivateBonus(It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(new GenericAPIResponse {
                ResponseCode = "00", ResponseDescription = "Request Processsed Successfully"
            });

            var result = await systemUnderTest.ActivateBonus(1, 1);

            Assert.True(result.ResponseCode == "00");
        }
        public async Task CheckThatUserCanGetServices()
        {
            var services         = GetPaginatedServices();
            var queryableService = services.AsQueryable();

            var mockSet = new Mock <DbSet <Service> >();

            mockSet.As <IDbAsyncEnumerable <Service> >()
            .Setup(m => m.GetAsyncEnumerator())
            .Returns(new TestDbAsyncEnumerator <Service>(queryableService.GetEnumerator()));

            mockSet.As <IQueryable <Service> >()
            .Setup(m => m.Provider)
            .Returns(new TestDbAsyncQueryProvider <Service>(queryableService.Provider));

            mockSet.As <IQueryable <Service> >().Setup(m => m.Expression).Returns(queryableService.Expression);
            mockSet.As <IQueryable <Service> >().Setup(m => m.ElementType).Returns(queryableService.ElementType);
            mockSet.As <IQueryable <Service> >().Setup(m => m.GetEnumerator()).Returns(queryableService.GetEnumerator());

            var dbContextMock = new Mock <IApplicationDbContext>();

            dbContextMock.Setup(c => c.Services).Returns(mockSet.Object);


            repositoryMock = new Mock <IRepository>();

            var systemUnderTest = new Promo.Infrastructure.Services.Repository(dbContextMock.Object);

            repositoryMock.Setup(x => x.GetServices(It.IsAny <int>(), It.IsAny <int>()))
            .ReturnsAsync(new GenericAPIResponse <PaginatedList <Service> > {
                ResponseCode = "00", ResponseDescription = "Request Processsed Successfully"
            });                                                                                                                                               //Data = services });

            var result = await systemUnderTest.GetServices(1, 1);

            Assert.True(result.ResponseCode == "00");
            Assert.True(result.Data == services);
        }
        public async Task CheckThatUserCanLogin()
        {
            var mockSet = new Mock <DbSet <User> >();

            var dbContextMock = new Mock <IApplicationDbContext>();

            dbContextMock.Setup(m => m.Users).Returns(mockSet.Object);


            var user = GetUser();

            repositoryMock = new Mock <IRepository>();
            var systemUnderTest = new Promo.Infrastructure.Services.Repository(dbContextMock.Object);

            repositoryMock.Setup(x => x.AuthenticateUser(It.IsAny <AuthenticateUserRequest>()))
            .ReturnsAsync(new GenericAPIResponse <AuthenticateUserResponse> {
                ResponseCode = "00", ResponseDescription = "Request Processsed Successfully", Data = user, Token = "xyzToken"
            });

            var result = await systemUnderTest.AuthenticateUser(new AuthenticateUserRequest { Username = "******", Password = "******" });

            Assert.True(result.ResponseCode == "00");
            Assert.True(result.Data == user);
        }