public async void ShouldReturnOKObjectResultWithClan()
            {
                //Arrange
                var expectedClans = new Clan[]
                {
                    new Clan {
                        Name = "Test Clan 1"
                    },
                    new Clan {
                        Name = "Test Clan 2"
                    },
                    new Clan {
                        Name = "Test Clan 3"
                    }
                };

                ClanServiceMock
                .Setup(x => x.ReadAllAsync())
                .ReturnsAsync(expectedClans);

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

                //Assert
                var okResult = Assert.IsType <OkObjectResult>(result);

                Assert.Same(expectedClans, okResult.Value);
            }
示例#2
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);
            }
示例#3
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);
            }
示例#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_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);
            }
示例#6
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);
            }
示例#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 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);
            }
示例#9
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);
            }
示例#10
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);
            }
示例#11
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);
            }
示例#12
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);
            }