Example #1
0
        public async Task CreateMembershipAsyncShouldCreateMembershipSuccessfully()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var membershipsService = new MembershipsService(dbContext, mapper);

            var membershipModel = new MembershipAdminCreateViewModel
            {
                Name        = MembershipName,
                YearlyPrice = MembershipYearlyPrice,
            };

            await membershipsService.CreateMembershipAsync(membershipModel);

            var actual = await dbContext.Memberships.FirstOrDefaultAsync();

            Assert.Equal(membershipModel.YearlyPrice, actual.YearlyPrice);
        }
Example #2
0
        public async Task GetByNameReturnEntitiesWithGivenNamesCountOfTimes()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipGetByNameDb").Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Memberships
            .AddRange(
                new Membership {
                Id = 1, Name = "FirstName"
            },
                new Membership {
                Id = 2, Name = "SecondName"
            },
                new Membership {
                Id = 3, Name = "ThirdName"
            });

            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            AutoMapperConfig.RegisterMappings(typeof(ErrorViewModel).GetTypeInfo().Assembly, typeof(MembershipServiceOutputModel).GetTypeInfo().Assembly);

            var result = service.GetByNames <MembershipViewModel>(new[] { "FirstName", "ThirdName" });

            Assert.NotNull(result);
            Assert.Collection(
                result,
                x => Assert.Contains("FirstName", x.Name),
                x => Assert.Contains("ThirdName", x.Name));
        }
Example #3
0
        public async Task GetMembershipPriceByIdAsyncShouldReturnZeroIfMembershipPriceIsNull()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var membershipsService = new MembershipsService(dbContext, mapper);

            var membership = new Membership
            {
                Id   = MembershipId,
                Name = MembershipName,
            };

            await dbContext.Memberships.AddAsync(membership);

            await dbContext.SaveChangesAsync();

            var expected = await membershipsService.GetMembershipPriceByIdAsync(MembershipId);

            Assert.Equal(0, expected);
        }
Example #4
0
        public async Task GetMembershipByIdAsyncShouldThrowExceptionIfMembershipIsNull()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var membershipsService = new MembershipsService(dbContext, mapper);

            var membership = new Membership
            {
                Name = MembershipName,
            };

            await dbContext.Memberships.AddAsync(membership);

            await dbContext.SaveChangesAsync();

            var exception = await Assert.ThrowsAsync <ArgumentNullException>(async() => await membershipsService.GetMembershipByIdAsync(MembershipId));

            Assert.IsType <ArgumentNullException>(exception);
        }
Example #5
0
        public async Task EditAsyncShouldEditCorrectly()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipsEditDb").Options;
            var dbContext = new ApplicationDbContext(options);

            await dbContext.Memberships.AddAsync(
                new Membership
            {
                Id                  = 1,
                Name                = "Name",
                Price               = 50,
                Duration            = Duration.OneMonth,
                HaveATrainer        = false,
                AmountOfPeopleLimit = AmountOfPeopleLimit.One,
                VisitLimit          = VisitLimit.OnePerDay,
            });

            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            var editModel = new EditMembershipInputModel
            {
                Name                = "NewName",
                Price               = 100,
                HaveATrainer        = true,
                Duration            = Duration.OneYear,
                AmountOfPeopleLimit = AmountOfPeopleLimit.Two,
                VisitLimit          = VisitLimit.Unlimited,
            };

            await service.EditAsync(1, editModel);

            var result = dbContext.Memberships.FirstOrDefault(x => x.Id == 1);

            Assert.NotNull(result);
            Assert.Equal("NewName", result.Name);
            Assert.Equal(100, result.Price);
            Assert.True(result.HaveATrainer);
            Assert.Equal(Duration.OneYear, result.Duration);
            Assert.Equal(AmountOfPeopleLimit.Two, result.AmountOfPeopleLimit);
            Assert.Equal(VisitLimit.Unlimited, result.VisitLimit);
        }
Example #6
0
        public async Task CreateAsyncShouldCreateCorrectly()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipsCreateDb").Options;
            var dbContext = new ApplicationDbContext(options);

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            this.InitializeMapper();

            var expectedMembership = new Membership
            {
                Id                  = 1,
                Name                = "Name",
                Price               = 50,
                Duration            = Duration.OneMonth,
                HaveATrainer        = false,
                AmountOfPeopleLimit = AmountOfPeopleLimit.One,
                VisitLimit          = VisitLimit.OnePerDay,
            };

            await service.CreateAsync(new CreateMembershipInputModel
            {
                Name                = "Name",
                Price               = 50,
                Duration            = Duration.OneMonth,
                HaveATrainer        = false,
                AmountOfPeopleLimit = AmountOfPeopleLimit.One,
                VisitLimit          = VisitLimit.OnePerDay,
            });

            var actualMembership = dbContext.Memberships.FirstOrDefault(x => x.Name == "Name");

            Assert.NotNull(actualMembership);
            Assert.Equal(expectedMembership.Id, actualMembership.Id);
            Assert.Equal(expectedMembership.Name, actualMembership.Name);
            Assert.Equal(expectedMembership.Price, actualMembership.Price);
            Assert.Equal(expectedMembership.HaveATrainer, actualMembership.HaveATrainer);
            Assert.Equal(expectedMembership.Duration, actualMembership.Duration);
            Assert.Equal(expectedMembership.AmountOfPeopleLimit, actualMembership.AmountOfPeopleLimit);
            Assert.Equal(expectedMembership.VisitLimit, actualMembership.VisitLimit);
        }
Example #7
0
        public async Task DeleteShouldDeleteCorrectly()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipsDeleteDb").Options;
            var dbContext = new ApplicationDbContext(options);

            await dbContext.Memberships.AddAsync(new Membership { Id = 1 });

            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            await service.DeleteAsync(1);

            var membership = dbContext.Memberships.FirstOrDefault(x => x.Id == 1);

            Assert.Null(membership);
        }
Example #8
0
        public async Task GetAllMembershipPlansAsyncShouldReturnAllMemberships()
        {
            var options = new DbContextOptionsBuilder <MyCalisthenicAppDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .Options;

            var dbContext = new MyCalisthenicAppDbContext(options);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new MyCalisthenicAppProfile());
            });

            var mapper = mockMapper.CreateMapper();

            var membershipsService = new MembershipsService(dbContext, mapper);

            for (int i = 0; i < 4; i++)
            {
                var membership = new Membership
                {
                    Name        = MembershipName,
                    YearlyPrice = MembershipYearlyPrice,
                };

                await dbContext.Memberships.AddAsync(membership);

                await dbContext.SaveChangesAsync();
            }

            var expected = await membershipsService.GetAllMembershipPlansAsync();

            var counter = 0;

            foreach (var mms in expected)
            {
                counter++;
            }

            Assert.Equal(4, counter);
        }
Example #9
0
        public async Task GetAllReturnAllEntities()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipsGetAllDb").Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Memberships.AddRange(
                new Membership(),
                new Membership(),
                new Membership());

            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            this.InitializeMapper();

            var result = service.GetAll <MembershipViewModel>();

            Assert.Equal(3, result.Count());
        }
Example #10
0
        public async Task GetByIdReturnEntityWhenExistElementWIthGivenId()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MembershipGetByIdDb").Options;
            var dbContext = new ApplicationDbContext(options);

            await dbContext.Memberships
            .AddAsync(new Membership
            {
                Id = 1,
            });

            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Membership>(dbContext);

            var service = new MembershipsService(repository);

            this.InitializeMapper();

            var result = service.GetById <MembershipViewModel>(1);

            Assert.Equal(1, result.Id);
        }