Пример #1
0
            public async void ShouldReturnAllNinjas()
            {
                //Arrange
                var expectedNinjas = new Ninja[]
                {
                    new Ninja {
                        Name = "Test Ninja 1"
                    },
                    new Ninja {
                        Name = "Test Ninja 2"
                    },
                    new Ninja {
                        Name = "Test Ninja 3"
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.ReadAllAsync())
                .ReturnsAsync(expectedNinjas);

                //Act
                var result = await ServiceUnderTest.ReadAllAsync();

                //Assert
                Assert.Same(expectedNinjas, result);
            }
Пример #2
0
            public async void ShouldThrowNinjaNotFoundExceptionWhenNinjaDoesNotExist()
            {
                //Arrange
                var clanName      = "Some clan name";
                var ninjaKey      = "SomeNinjaKey";
                var expectedNinja = new Ninja {
                    Clan = new Clan {
                        Name = clanName
                    }, Key = ninjaKey
                };

                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ThrowsAsync(new NinjaNotFoundException(clanName, ninjaKey))
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.DeleteAsync(clanName, ninjaKey))
                .Verifiable();

                //Act & Assert
                await Assert.ThrowsAsync <NinjaNotFoundException>(() => ServiceUnderTest.UpdateAsync(expectedNinja));

                NinjaRepositoryMock.Verify(x => x.ReadOneAsync(clanName, ninjaKey), Times.Once);
                NinjaRepositoryMock.Verify(x => x.UpdateAsync(expectedNinja), Times.Never);
            }
Пример #3
0
            public async void Should_throw_NinjaNotFoundException_when_ninja_does_not_exist()
            {
                // Arrange
                const string ninjaKey        = "SomeKey";
                const string clanKey         = "Some clan";
                var          unexistingNinja = new Ninja {
                    Key = ninjaKey, Clan = new Clan {
                        Name = clanKey
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.UpdateAsync(unexistingNinja))
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanKey, ninjaKey))
                .ReturnsAsync(default(Ninja))
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanKey))
                .ReturnsAsync(true);

                // Act & Assert
                await Assert.ThrowsAsync <NinjaNotFoundException>(() => ServiceUnderTest.UpdateAsync(unexistingNinja));

                // Make sure UpdateAsync is never hit
                NinjaRepositoryMock
                .Verify(x => x.UpdateAsync(unexistingNinja), Times.Never);

                // Make sure we read the ninja from the repository before attempting an update.
                NinjaRepositoryMock
                .Verify(x => x.ReadOneAsync(clanKey, ninjaKey), Times.Once);
            }
Пример #4
0
            public async void Should_throw_a_ClanNotFoundException_when_clan_does_not_exist()
            {
                // Arrange
                const string ninjaKey        = "SomeKey";
                const string clanKey         = "Some clan";
                var          unexistingNinja = new Ninja {
                    Key = ninjaKey, Clan = new Clan {
                        Name = clanKey
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.UpdateAsync(unexistingNinja))
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanKey))
                .ReturnsAsync(false);

                // Act & Assert
                await Assert.ThrowsAsync <ClanNotFoundException>(() => ServiceUnderTest.UpdateAsync(unexistingNinja));

                // Make sure UpdateAsync is never called
                NinjaRepositoryMock
                .Verify(x => x.UpdateAsync(unexistingNinja), Times.Never);
            }
Пример #5
0
            public async void Should_update_and_return_the_updated_Ninja()
            {
                // Arrange
                const string ninjaKey      = "Some key";
                const string clanKey       = "Some clan";
                var          expectedNinja = new Ninja
                {
                    Key  = ninjaKey,
                    Clan = new Clan {
                        Name = clanKey
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanKey, ninjaKey))
                .ReturnsAsync(expectedNinja);
                NinjaRepositoryMock
                .Setup(x => x.UpdateAsync(expectedNinja))
                .ReturnsAsync(expectedNinja)
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanKey))
                .ReturnsAsync(true);

                // Act
                var result = await ServiceUnderTest.UpdateAsync(expectedNinja);

                // Assert
                Assert.Same(expectedNinja, result);
                NinjaRepositoryMock.Verify(x => x.UpdateAsync(expectedNinja), Times.Once);
            }
Пример #6
0
            public async void ShouldDeleteAndReturnTheDeletedNinja()
            {
                //Arrange
                var clanName      = "Some clan name";
                var ninjaKey      = "SomeNinjaKey";
                var expectedNinja = new Ninja();

                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanName))
                .ReturnsAsync(true);
                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ReturnsAsync(expectedNinja)
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.DeleteAsync(clanName, ninjaKey))
                .ReturnsAsync(expectedNinja)
                .Verifiable();

                //Act
                var result = await ServiceUnderTest.DeleteAsync(clanName, ninjaKey);

                //Assert
                Assert.Same(expectedNinja, result);
                NinjaRepositoryMock.Verify(x => x.ReadOneAsync(clanName, ninjaKey), Times.Once);
                NinjaRepositoryMock.Verify(x => x.DeleteAsync(clanName, ninjaKey), Times.Once);
            }
Пример #7
0
            public async void Should_create_and_return_the_created_Ninja()
            {
                // Arrange
                const string clanName      = "Some clan name";
                var          expectedNinja = new Ninja {
                    Clan = new Clan {
                        Name = clanName
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.CreateAsync(expectedNinja))
                .ReturnsAsync(expectedNinja)
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanName))
                .ReturnsAsync(true);

                // Act
                var result = await ServiceUnderTest.CreateAsync(expectedNinja);

                // Assert
                Assert.Same(expectedNinja, result);
                NinjaRepositoryMock.Verify(x => x.CreateAsync(expectedNinja), Times.Once);
            }
Пример #8
0
            public async void ShouldCreateAndReturnTheCreatedNinja()
            {
                //Arrange
                var clanName      = "Some clan name";
                var expectedNinja = new Ninja {
                    Name = "Test Ninja 1", Clan = new Clan {
                        Name = clanName
                    }
                };

                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(expectedNinja.Clan.Name))
                .ReturnsAsync(true)
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.CreateAsync(expectedNinja))
                .ReturnsAsync(expectedNinja)
                .Verifiable();

                //Act
                var result = await ServiceUnderTest.CreateAsync(expectedNinja);

                //Assert
                Assert.Same(expectedNinja, result);
                ClanServiceMock.Verify(x => x.IsClanExistsAsync(clanName), Times.Once);
                NinjaRepositoryMock.Verify(x => x.CreateAsync(expectedNinja), Times.Once);
            }
Пример #9
0
            public async void Should_throw_NinjaNotFoundException_when_ninja_does_not_exist()
            {
                // Arrange
                const string clanName = "Some clan name";
                const string ninjaKey = "Some ninja key";

                NinjaRepositoryMock
                .Setup(x => x.DeleteAsync(clanName, ninjaKey))
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ReturnsAsync(default(Ninja))
                .Verifiable();

                // Act & Assert
                await Assert.ThrowsAsync <NinjaNotFoundException>(() => ServiceUnderTest.DeleteAsync(clanName, ninjaKey));

                // Make sure UpdateAsync is never hit
                NinjaRepositoryMock
                .Verify(x => x.DeleteAsync(clanName, ninjaKey), Times.Never);

                // Make sure we read the ninja from the repository before attempting an update.
                NinjaRepositoryMock
                .Verify(x => x.ReadOneAsync(clanName, ninjaKey), Times.Once);
            }
Пример #10
0
            public async void Should_throw_NinjaNotFoundException_when_ninja_does_not_exist()
            {
                // Arrange
                var unexistingClanName = "Some clan name";
                var unexistingNinjaKey = "Some ninja key";

                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(unexistingClanName, unexistingNinjaKey))
                .ReturnsAsync(default(Ninja));

                // Act & Assert
                await Assert.ThrowsAsync <NinjaNotFoundException>(() => ServiceUnderTest.ReadOneAsync(unexistingClanName, unexistingNinjaKey));
            }
Пример #11
0
            public async void ShouldThrowClanNotFoundExceptionWhenClanDoesNotExist()
            {
                //Arrange
                var unexistingClanName = "Some clan name";

                NinjaRepositoryMock
                .Setup(x => x.ReadAllClanAsync(unexistingClanName))
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(unexistingClanName))
                .ReturnsAsync(false)
                .Verifiable();

                //Act & Assert
                await Assert.ThrowsAsync <ClanNotFoundException>(() => ServiceUnderTest.ReadAllClanAsync(unexistingClanName));

                NinjaRepositoryMock.Verify(x => x.ReadAllClanAsync(unexistingClanName), Times.Never);
                ClanServiceMock.Verify(x => x.IsClanExistsAsync(unexistingClanName), Times.Once);
            }
Пример #12
0
            public async void Should_return_OkObjectResult_with_a_Ninja()
            {
                // Arrange
                var clanName      = "Some clan name";
                var ninjaKey      = "Some ninja key";
                var expectedNinja = new Ninja {
                    Name = "Test Ninja 1"
                };

                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ReturnsAsync(expectedNinja);

                // Act
                var result = await ServiceUnderTest.ReadOneAsync(clanName, ninjaKey);

                // Assert
                Assert.Same(expectedNinja, result);
            }
Пример #13
0
            public async void ShouldThrowNinjaNotFoundExceptionWhenNinjaDoesNotExist()
            {
                //Arrange
                var clanName = "Some clan name";
                var ninjaKey = "SomeNinjaKey";

                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ThrowsAsync(new NinjaNotFoundException(clanName, ninjaKey))
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanName))
                .ReturnsAsync(true)
                .Verifiable();

                //Act & Assert
                await Assert.ThrowsAsync <NinjaNotFoundException>(() => ServiceUnderTest.ReadOneAsync(clanName, ninjaKey));

                NinjaRepositoryMock.Verify(x => x.ReadOneAsync(clanName, ninjaKey), Times.Once);
                ClanServiceMock.Verify(x => x.IsClanExistsAsync(clanName), Times.Once);
            }
Пример #14
0
            public async void Should_throw_a_ClanNotFoundException_when_clan_does_not_exist()
            {
                const string clanName      = "Some clan name";
                var          expectedNinja = new Ninja {
                    Clan = new Clan {
                        Name = clanName
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.CreateAsync(expectedNinja))
                .ReturnsAsync(expectedNinja)
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanName))
                .ReturnsAsync(false);

                // Act & Assert
                await Assert.ThrowsAsync <ClanNotFoundException>(() => ServiceUnderTest.CreateAsync(expectedNinja));

                // Make sure CreateAsync is never called
                NinjaRepositoryMock.Verify(x => x.CreateAsync(expectedNinja), Times.Never);
            }
Пример #15
0
            public async void ShouldReturnAllNinjasInClan()
            {
                //Arrange
                var clanName       = "Some clan name";
                var expectedNinjas = new Ninja[]
                {
                    new Ninja {
                        Name = "Test Ninja 1"
                    },
                    new Ninja {
                        Name = "Test Ninja 2"
                    },
                    new Ninja {
                        Name = "Test Ninja 3"
                    }
                };

                NinjaRepositoryMock
                .Setup(x => x.ReadAllClanAsync(clanName))
                .ReturnsAsync(expectedNinjas)
                .Verifiable();
                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(clanName))
                .ReturnsAsync(true)
                .Verifiable();

                //Act
                var result = await ServiceUnderTest.ReadAllClanAsync(clanName);

                //Assert
                Assert.Same(expectedNinjas, result);
                NinjaRepositoryMock
                .Verify(x => x.ReadAllClanAsync(clanName), Times.Once);
                ClanServiceMock
                .Verify(x => x.IsClanExistsAsync(clanName), Times.Once);
            }
Пример #16
0
            public async void Should_delete_and_return_the_deleted_Ninja()
            {
                // Arrange
                var clanName      = "My clan";
                var ninjaKey      = "Some key";
                var expectedNinja = new Ninja {
                    Name = "Test Ninja 1"
                };

                NinjaRepositoryMock
                .Setup(x => x.DeleteAsync(clanName, ninjaKey))
                .ReturnsAsync(expectedNinja)
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.ReadOneAsync(clanName, ninjaKey))
                .ReturnsAsync(expectedNinja);

                // Act
                var result = await ServiceUnderTest.DeleteAsync(clanName, ninjaKey);

                // Assert
                Assert.Same(expectedNinja, result);
                NinjaRepositoryMock.Verify(x => x.DeleteAsync(clanName, ninjaKey), Times.Once);
            }
Пример #17
0
            public async void ShouldThrowClanNotFoundExceptionWhenClanDoesNotExist()
            {
                //Arrange
                var clanName      = "Some clan name";
                var expectedNinja = new Ninja {
                    Name = "Test Ninja 1", Clan = new Clan {
                        Name = clanName
                    }
                };

                ClanServiceMock
                .Setup(x => x.IsClanExistsAsync(expectedNinja.Clan.Name))
                .ReturnsAsync(false)
                .Verifiable();
                NinjaRepositoryMock
                .Setup(x => x.CreateAsync(expectedNinja))
                .Verifiable();

                //Act & Assert
                await Assert.ThrowsAsync <ClanNotFoundException>(() => ServiceUnderTest.CreateAsync(expectedNinja));

                ClanServiceMock.Verify(x => x.IsClanExistsAsync(clanName), Times.Once);
                NinjaRepositoryMock.Verify(x => x.CreateAsync(expectedNinja), Times.Never);
            }