public async Task ShouldReturnTrue_WhenUserFavoritedAudio() { // Assign var target = await RunAsDefaultUserAsync(); target.TryGetUserId(out var targetId); var audio = new AudioFaker(targetId).Generate(); InsertIntoDatabase(audio); var observer = await RunAsUserAsync(); observer.TryGetUserId(out var observerId); var favoriteAudio = new FavoriteAudio { AudioId = audio.Id, UserId = observerId, }; InsertIntoDatabase(favoriteAudio); // Act var isFavorited = await SendAsync(new CheckIfAudioFavoritedQuery(audio.Id, observerId)); // Assert isFavorited.Should().BeTrue(); }
public async Task SuccessfullyGetAudioFeed() { var user1 = await RunAsUserAsync(); user1.TryGetUserId(out var user1Id); var oneAudios = new AudioFaker(user1Id).Generate(5); InsertRangeIntoDatabase(oneAudios); var user2 = await RunAsUserAsync(); user2.TryGetUserId(out var user2Id); var twoAudios = new AudioFaker(user2Id).Generate(5); InsertRangeIntoDatabase(twoAudios); var user = await RunAsDefaultUserAsync(); user.TryGetUserId(out var userId); InsertIntoDatabase(new FollowedUser { ObserverId = userId, TargetId = user1Id }, new FollowedUser { ObserverId = userId, TargetId = user2Id }); var result = await SendAsync(new GetAudioFeedQuery(userId)); result.Items.Should().NotBeEmpty(); result.Items.Count.Should().Be(10); }
public async Task AddFavoriteTest() { // Assign var target = await RunAsDefaultUserAsync(); target.TryGetUserId(out var targetId); var observer = await RunAsUserAsync(); observer.TryGetUserId(out var observerId); var audio = new AudioFaker(targetId).Generate(); InsertIntoDatabase(audio); // Act await SendAsync(new SetFavoriteAudioCommand(audio.Id, observerId, true)); var refetchAudio = ExecuteDbContext(database => { return(database.Audios .AsNoTracking() .Include(u => u.FavoriteAudios) .SingleOrDefault(a => a.Id == audio.Id)); }); // Assert refetchAudio.Should().NotBeNull(); refetchAudio !.FavoriteAudios.Should().NotBeEmpty(); refetchAudio.FavoriteAudios.Should().Contain(x => x.UserId == observerId); }
public async Task ShouldUpdateSuccessfully() { // Assign var owner = await RunAsUserAsync("kopacetic"); owner.TryGetUserId(out var ownerId); var audio = new AudioFaker(ownerId).Generate(); InsertIntoDatabase(audio); // Act var command = new UpdateAudioCommandFaker(audio.Id).Generate(); await SendAsync(command); var created = ExecuteDbContext(database => { return(database.Audios .Include(a => a.User) .SingleOrDefault(a => a.Id == audio.Id)); }); // Assert created.Should().NotBeNull(); created !.Title.Should().Be(command.Title); created.Description.Should().Be(command.Description); created.Tags.Count.Should().Be(command.Tags !.Count); }
public async Task ShouldCacheSuccessfully() { // Assign var user = await RunAsDefaultUserAsync(); user.TryGetUserId(out var userId); var audio = new AudioFaker(userId).Generate(); InsertIntoDatabase(audio); var result = await SendAsync(new GetAudioQuery(audio.Id)); // Act var cacheResult = await GetCache <AudioDto>(CacheKeys.Audio.GetAudio(audio.Id)); // Assert cacheResult.Should().NotBeNull(); cacheResult.Should().BeOfType <AudioDto>(); cacheResult !.Title.Should().Be(result !.Title); cacheResult.Description.Should().Be(result !.Description); cacheResult.Created.Should().Be(result !.Created); cacheResult.Duration.Should().Be(result !.Duration); cacheResult.Picture.Should().BeNullOrEmpty(); cacheResult.Tags.Count.Should().Be(result !.Tags.Count); cacheResult.Size.Should().Be(result !.Size); result.LastModified.Should().BeNull(); result.User.Should().NotBeNull(); result.User.Should().BeOfType <UserDto>(); result.User.Id.Should().Be(userId); }
public async Task ShouldNotRemoveAudio_WhenNotTheAuthor() { var owner = await RunAsDefaultUserAsync(); owner.TryGetUserId(out var ownerId); var audio = new AudioFaker(ownerId).Generate(); InsertIntoDatabase(audio); await RunAsUserAsync(); var result = await SendAsync(new RemoveAudioCommand(audio.Id)); result.IsSuccess.Should().BeFalse(); result.ErrorCode.Should().Be(ResultError.Forbidden); }
public async Task ShouldNotGetAudio_WhenAudioIdIsInvalid() { // Assign var owner = await RunAsDefaultUserAsync(); owner.TryGetUserId(out var ownerId); var audio = new AudioFaker(ownerId).Generate(); InsertIntoDatabase(audio); // Act var result = await SendAsync(new GetAudioQuery(0)); // Assert result.Should().BeNull(); }
public async Task ShouldRemoveAudio() { var owner = await RunAsDefaultUserAsync(); owner.TryGetUserId(out var ownerId); var audio = new AudioFaker(ownerId).Generate(); InsertIntoDatabase(audio); var command = new RemoveAudioCommand(audio.Id); var result = await SendAsync(command); var created = ExecuteDbContext(dbContext => dbContext.Audios.SingleOrDefault(x => x.Id == audio.Id)); result.Should().NotBeNull(); result.IsSuccess.Should().Be(true); created.Should().BeNull(); }
public async Task ShouldReturnFavoriteAudioSuccessfully() { // Assign var target = await RunAsDefaultUserAsync(); target.TryGetUserId(out var targetId); var audioFaker = new AudioFaker(targetId); var audios = audioFaker .Generate(3); InsertIntoDatabase(audios.ToArray()); var observer = await RunAsUserAsync(); observer.TryGetUserId(out var observerId); observer.TryGetUserName(out var observerUsername); var favoriteAudios = new List <FavoriteAudio>(); foreach (var audio in audios) { var favoriteAudio = new FavoriteAudio { AudioId = audio.Id, UserId = observerId, }; favoriteAudios.Add(favoriteAudio); } InsertIntoDatabase(favoriteAudios.ToArray()); // Act var response = await SendAsync(new GetUserFavoriteAudiosQuery { Username = observerUsername }); // Assert response.Should().NotBeNull(); response.Items.Count.Should().Be(3); }
public async Task SearchForAudiosSuccessfully() { var faker = new Faker(); // create tags var tags = Enumerable.Range(1, 5) .Select <int, string>(_ => faker.Random.String2(5, 10)) .ToList(); // create posts var user = await RunAsDefaultUserAsync(); user.TryGetUserId(out var userId); var audioFaker = new AudioFaker(userId) .FinishWith((f, a) => { a.Tags = new List <string> { tags[0], tags[1] }; }); var audio = audioFaker.Generate(); InsertIntoDatabase(audio); // Act var request = new SearchAudiosQuery { Q = audio.Title, Tags = $"{tags[0]},{tags[1]}" }; var results = await SendAsync(request); //Assert results.Should().NotBeNull(); results.Items.Count.Should().BeGreaterThan(0); results.Items.Should().Contain(x => x.Id == audio.Id); }
public async Task ShouldInvalidateCacheSuccessfully() { // Assign var user = await RunAsDefaultUserAsync(); user.TryGetUserId(out var userId); var audio = new AudioFaker(userId).Generate(); InsertIntoDatabase(audio); await SendAsync(new GetAudioQuery(audio.Id)); var command = new UpdateAudioCommandFaker(audio.Id).Generate(); await SendAsync(command); // Act var cacheResult = await GetCache <AudioDto>(CacheKeys.Audio.GetAudio(audio.Id)); // Assert cacheResult.Should().BeNull(); }
public async Task ShouldNotUpdate_WhenUserCannotModify() { // Assign var owner = await RunAsUserAsync("kopacetic"); owner.TryGetUserId(out var ownerId); var audio = new AudioFaker(ownerId).Generate(); InsertIntoDatabase(audio); // Act await RunAsDefaultUserAsync(); var command = new UpdateAudioCommandFaker(audio.Id).Generate(); var result = await SendAsync(command); // Assert result.Should().NotBeNull(); result.IsSuccess.Should().Be(false); result.ErrorCode.Should().Be(ResultError.Forbidden); }