public async void GetDevelopersWithTooHighSkillScore()
        {
            //Arrange
            var mockAPIClient    = new Mock <IAPIClient>();
            var developerService = new DeveloperService(null, mockAPIClient.Object);

            mockAPIClient.Setup(m => m.Execute(It.IsAny <GetAllDevelopersRequest>())).ReturnsAsync(new List <Developer>
            {
                new Developer
                {
                    FirstName = "Colin",
                    LastName  = "Abbot",
                    Age       = 34,
                    Skills    = _GetLowBackendSkills()
                },
                new Developer
                {
                    FirstName = "Sarah",
                    LastName  = "Winchester",
                    Age       = 40,
                    Skills    = _GetLowFrontendSkills()
                }
            });

            //Act
            var developers = await developerService.GetDevelopersBySkillAsync(12);

            //Assert
            developers.Should().BeEmpty();
        }
        public async void GetDevelopersSkillTypesJustWithHighScore()
        {
            //Arrange
            var mockAPIClient    = new Mock <IAPIClient>();
            var developerService = new DeveloperService(null, mockAPIClient.Object);
            var mixedSkills      = _GetHighBackendSkills();

            mixedSkills.AddRange(_GetLowFrontendSkills());
            mockAPIClient.Setup(m => m.Execute(It.IsAny <GetAllDevelopersRequest>())).ReturnsAsync(new List <Developer>
            {
                new Developer
                {
                    FirstName = "Colin",
                    LastName  = "Abbot",
                    Age       = 34,
                    Skills    = mixedSkills
                }
            });

            //Act
            var developers = await developerService.GetDevelopersBySkillAsync(10);

            //Assert
            developers.Should().HaveCount(1);
            developers.SelectMany(dev => dev.Skills.Select(skill => skill.Type)).Should().OnlyContain(x => x.Equals("backend"));
        }
        public void ThrowExceptionForNegativeSkills()
        {
            //Arrange
            var developerService = new DeveloperService(null, null);

            //Act
            Func <Task> act = async() => await developerService.GetDevelopersBySkillAsync(-1);

            //Assert
            act.ShouldThrow <ArgumentException>();
        }