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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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()); }
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); }