Ejemplo n.º 1
0
        public void RemoveRange_ShouldFail_WhenRemovingAllNonExistingEntities(string ownerId1, string firstName1, string lastName1, string ownerId2, string firstName2, string lastName2)
        {
            //Arrange
            Guid     wrongGuid  = Guid.Parse("c3b922ac-a2bf-4b75-a9dc-5b3c44798264");
            Guid     ownerGuid1 = Guid.Parse(ownerId1);
            Guid     ownerGuid2 = Guid.Parse(ownerId2);
            tblOwner owner1     = new tblOwner()
            {
                Id = ownerGuid1, FirstName = firstName1, LastName = lastName1
            };
            tblOwner owner2 = new tblOwner()
            {
                Id = ownerGuid2, FirstName = firstName2, LastName = lastName2
            };
            var entities = new tblOwner[] { owner1, owner2 };

            _mockOwnerRepository.Setup(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()))
            .ReturnsAsync(new tblOwner[] { owner1 });

            //Act
            var task = _service.RemoveRange(entities.Select(x => x.Id));

            //Assert
            _mockOwnerRepository.Verify(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()), Times.Once());
            Assert.ThrowsAsync <InvalidOperationException>(() => task);
            _mockOwnerRepository.Verify(x => x.RemoveRange(entities), Times.Never());
            Assert.False(task.IsCompletedSuccessfully);
        }
Ejemplo n.º 2
0
        public void Update_ShouldSucceed_WithMatchingEntity(string ownerId1, string firstName1, string lastName1, string firstName2, string lastName2)
        {
            //Arrange
            Guid ownerGuid1 = Guid.Parse(ownerId1);

            tblOwner owner1 = new tblOwner()
            {
                Id = ownerGuid1, FirstName = firstName1, LastName = lastName1
            };
            tblOwner matchedEntity = new tblOwner {
                Id = ownerGuid1, FirstName = firstName1, LastName = lastName1
            };

            _mockOwnerRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>()))
            .ReturnsAsync(matchedEntity);

            //Act
            var result = _service.Update(owner1);

            //Assert
            _mockOwnerRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>()), Times.Once());
            //_mockPetRepository.Verify(x => x.FindAsync(It.IsAny<Expression<Func<tblPet, bool>>>()), Times.Once());
            //_mockPetRepository.Verify(x => x.Update(It.IsAny<IEnumerable<tblPet>>()));//TODO: Update all pets too?
            _mockOwnerRepository.Verify(x => x.Update(owner1), Times.Once());
            Assert.True(result.IsCompletedSuccessfully);
        }
Ejemplo n.º 3
0
        public void AddRange_ShouldSucceed_WithUnusedIds(string ownerId1, string firstName1, string lastName1, string ownerId2, string firstName2, string lastName2)
        {
            //Arrange
            Guid wrongGuid  = Guid.Parse("c3b922ac-a2bf-4b75-a9dc-5b3c44798264");
            Guid ownerGuid1 = Guid.Parse(ownerId1);
            Guid ownerGuid2 = Guid.Parse(ownerId2);

            _mockOwnerRepository.Setup(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()))
            .ReturnsAsync(Enumerable.Empty <tblOwner>());

            tblOwner owner1 = new tblOwner()
            {
                Id = ownerGuid1, FirstName = firstName1, LastName = lastName1
            };
            tblOwner owner2 = new tblOwner()
            {
                Id = ownerGuid2, FirstName = firstName2, LastName = lastName2
            };
            var entities = new tblOwner[] { owner1, owner2 };

            //Act
            var result = _service.AddRange(entities);

            //Assert
            _mockOwnerRepository.Verify(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()), Times.Once());
            _mockOwnerRepository.Verify(x => x.AddRange(entities), Times.Once());
            Assert.True(result.IsCompletedSuccessfully);
        }
Ejemplo n.º 4
0
        public void RemoveRange_ShouldSucceed_WithMatchingIds(string ownerId1, string firstName1, string lastName1, string ownerId2, string firstName2, string lastName2)
        {
            //Arrange
            Guid ownerGuid1 = Guid.Parse(ownerId1);
            Guid ownerGuid2 = Guid.Parse(ownerId2);

            tblOwner owner1 = new tblOwner()
            {
                Id = ownerGuid1, FirstName = firstName1, LastName = lastName1
            };
            tblOwner owner2 = new tblOwner()
            {
                Id = ownerGuid2, FirstName = firstName2, LastName = lastName2
            };
            var entities = new tblOwner[] { owner1, owner2 };

            _mockOwnerRepository.Setup(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()))
            .ReturnsAsync(entities);

            //Act
            var result = _service.RemoveRange(entities.Select(x => x.Id));

            //Assert
            _mockOwnerRepository.Verify(x => x.FindAsync(It.IsAny <Expression <Func <tblOwner, bool> > >()), Times.Once());
            _mockPetRepository.Verify(x => x.FindAsync(It.IsAny <Expression <Func <tblPet, bool> > >()), Times.Once());
            _mockPetRepository.Verify(x => x.RemoveRange(It.IsAny <IEnumerable <tblPet> >()));
            _mockOwnerRepository.Verify(x => x.RemoveRange(entities), Times.Once());
            Assert.True(result.IsCompletedSuccessfully);
        }
Ejemplo n.º 5
0
        public void Remove_ShouldSucceed_WithMatchingId(string ownerId)
        {
            //Arrange
            Guid     ownerGuid     = Guid.Parse(ownerId);
            tblOwner existingOwner = new tblOwner()
            {
                Id        = ownerGuid,
                FirstName = "bill",
                LastName  = "ted"
            };

            existingOwner.Pets.Add(new tblPet
            {
                Id             = Guid.Parse("84ffdbe4-27ca-4c0a-b2c8-aa7fb1e7c711"),
                Name           = "Clifford",
                FKOwnerId      = ownerGuid,
                FKAnimalTypeId = 1
            });

            _mockOwnerRepository.Reset();
            _mockOwnerRepository.Setup(x => x.GetByIdAsync(ownerGuid))
            .ReturnsAsync(existingOwner);

            //Act
            var result = _service.Remove(ownerGuid);

            //Assert
            _mockOwnerRepository.Verify(x => x.Remove(existingOwner), Times.Once());
            Assert.True(result.IsCompletedSuccessfully);
        }
Ejemplo n.º 6
0
        public void Update_Test_ShouldSucceed_WhenEntityExists(string id, string firstName, string lastName)
        {
            //Arrange
            Guid guid           = Guid.Parse(id);
            var  existingOwners = _context.Set <tblOwner>().ToList();

            var oldOwner = _context.Set <tblOwner>().FirstOrDefault(x => x.Id == guid);

            oldOwner.FirstName = firstName;
            oldOwner.LastName  = lastName;
            var oldData = new tblOwner {
                Id = guid, FirstName = "Brian", LastName = "Lara"
            };
            var newData = new tblOwner {
                Id = guid, FirstName = firstName, LastName = lastName
            };
            Repository <tblOwner> ownerRepo = new Repository <tblOwner>(_context);

            //Act
            ownerRepo.Update(oldOwner);
            var result = _context.Set <tblOwner>().FirstOrDefault(x => x.Id == guid);

            //Assert
            Assert.Equal(firstName, result.FirstName);
            Assert.Equal(lastName, result.LastName);
        }
Ejemplo n.º 7
0
        public async Task Update(tblOwner owner)
        {
            if (await _ownerRepository.GetByIdAsync(owner.Id) == null)
            {
                throw new EntityNotFoundException($"Could not find owner with id {owner.Id}");
            }
            ;

            await _ownerRepository.Update(owner);
        }
Ejemplo n.º 8
0
        public async Task <tblOwner> Add(tblOwner entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("Cannot add blank owner");
            }
            if (await _ownerRepository.GetByIdAsync(entity.Id).ConfigureAwait(false) != null)
            {
                throw new InvalidOperationException("Owner already exists.");
            }

            return(await _ownerRepository.Add(entity));
        }
Ejemplo n.º 9
0
        public void Update_Test_ShouldFail_WhenWasntFetchedFromDb(string id, string firstName, string lastName)
        {
            //Arrange
            Guid guid           = Guid.Parse(id);
            var  existingOwners = _context.Set <tblOwner>().ToList();

            var oldOwner = _context.Set <tblOwner>().FirstOrDefault(x => x.Id == guid);

            oldOwner.FirstName = firstName;
            oldOwner.LastName  = lastName;
            var newData = new tblOwner {
                Id = guid, FirstName = firstName, LastName = lastName
            };
            Repository <tblOwner> ownerRepo = new Repository <tblOwner>(_context);

            //Act/Assert
            Assert.ThrowsAsync <InvalidOperationException>(() => ownerRepo.Update(newData));
        }
Ejemplo n.º 10
0
        public void Remove_ShouldFail_IfOwnerDoesntExists(string ownerId, string firstName, string lastName)
        {
            //Arrange
            Guid     wrongGuid = Guid.Parse("c3b922ac-a2bf-4b75-a9dc-5b3c44798264");
            Guid     guid      = Guid.Parse(ownerId);
            tblOwner fakeOwner = new tblOwner {
                Id = guid, FirstName = firstName, LastName = lastName
            };

            _mockOwnerRepository.Setup(x => x.GetByIdAsync(guid))
            .ReturnsAsync((tblOwner)null);

            //Act
            var task = _service.Remove(guid);

            //Assert
            Assert.ThrowsAnyAsync <InvalidOperationException>(() => task);
            _mockPetRepository.Verify(x => x.RemoveRange(It.IsAny <IEnumerable <tblPet> >()), Times.Never());
            _mockOwnerRepository.Verify(x => x.Remove(It.IsAny <tblOwner>()), Times.Never());
        }
Ejemplo n.º 11
0
        public void Add_ShouldFail_IfOwnerAlreadyExists(string ownerId, string firstName, string lastName)
        {
            //Arrange
            Guid     guid      = Guid.Parse(ownerId);
            tblOwner fakeOwner = new tblOwner {
                Id = guid, FirstName = firstName, LastName = lastName
            };

            _mockOwnerRepository.Setup(x => x.GetByIdAsync(guid))
            .ReturnsAsync(fakeOwner);

            //Act
            var task = _service.Add(fakeOwner);

            //Assert
            Assert.ThrowsAnyAsync <InvalidOperationException>(() => task);
            _mockOwnerRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>()), Times.Once());
            _mockOwnerRepository.Verify(x => x.Add(It.IsAny <tblOwner>()), Times.Never());
            Assert.False(task.IsCompletedSuccessfully);
        }
Ejemplo n.º 12
0
        public void Add_ShouldSucceed_WithUnusedId(string ownerId, string petId, string firstName, string lastName)
        {
            //Arrange
            Guid wrongGuid = Guid.Parse("c3b922ac-a2bf-4b75-a9dc-5b3c44798264");
            Guid ownerGuid = Guid.Parse(ownerId);

            _mockOwnerRepository.Setup(x => x.GetByIdAsync(ownerGuid))
            .ReturnsAsync((tblOwner)null);

            tblOwner owner = new tblOwner()
            {
                Id = ownerGuid, FirstName = firstName, LastName = lastName
            };
            //Act
            var result = _service.Add(owner);

            //Assert
            _mockOwnerRepository.Verify(x => x.GetByIdAsync(ownerGuid), Times.Once());
            Assert.True(result.IsCompletedSuccessfully);
        }
Ejemplo n.º 13
0
        public void GetById_Test_Owners(string id, string firstName, string lastName)
        {
            //Arrange
            Guid     guid     = Guid.Parse(id);
            tblOwner expected = new tblOwner {
                Id = guid, FirstName = firstName, LastName = lastName
            };
            Repository <tblOwner> repo = new Repository <tblOwner>(_context);

            //Act
            var result = repo.GetByIdAsync(guid).Result;

            //Assert
            Assert.True(result != null);
            Assert.IsType <tblOwner>(result);

            Assert.Equal(guid, result.Id);
            Assert.Equal(firstName, result.FirstName);
            Assert.Equal(lastName, result.LastName);
            Assert.Equal($"{firstName} {lastName}", result.FullName);//More of an integration test including the tblOwner entity model
            Assert.Equal(2, result.Pets.Count());
        }
Ejemplo n.º 14
0
        public void GetOwnerByPetId_ShouldPass_WhenIdExists(string petId, string ownerId, string firstName, string lastName, int petCount)
        {
            //Arrange
            Guid petGuid  = Guid.Parse(petId);
            var  expected = new tblOwner {
                Id = Guid.Parse(ownerId), FirstName = firstName, LastName = lastName
            };
            IPetRepository repo = new PetRepository(_context);

            //Act
            var result = repo.GetOwnerByPetIdAsync(petGuid).Result;

            //Assert
            Assert.True(expected != null);
            Assert.True(result != null);
            Assert.IsType <tblOwner>(result);

            // Assert.Equal/True weren't working so just check that all props match the expected value.
            Assert.Equal(expected.Id, result.Id);
            Assert.Equal(expected.FirstName, result.FirstName);
            Assert.Equal(expected.LastName, result.LastName);
            Assert.Equal(petCount, result.Pets.Count);//TODO: Assert that the pets are as expected...
        }