public async Task TestCreateOrUpdateRule()
        {
            // Arrange
            var weatherForecastService = new Mock <IWeatherForecastService>();
            var clothingRuleRepository = new Mock <IClothingRuleRepository>();
            var service = new ClothingRecommendationService(weatherForecastService.Object, clothingRuleRepository.Object);

            var guid       = new Guid();
            var newRule    = new ClothingRule(0, 20, null, "Godt humør", guid);
            var updateRule = new ClothingRule(0, 30, null, "Støvler", guid);

            // Act
            clothingRuleRepository.Setup(crr =>
                                         crr.Create(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            var isCreatedRule = await service.CreateOrUpdateRule(newRule);

            clothingRuleRepository.Setup(crr =>
                                         crr.Update(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            var isUpdatedRule = await service.CreateOrUpdateRule(updateRule);

            // Assert
            clothingRuleRepository.Verify(crr => crr.Create(It.Is <ClothingRule>(cr => cr.Clothes == "Godt humør")));
            Assert.IsTrue(isCreatedRule);

            clothingRuleRepository.Verify(crr => crr.Update(It.Is <ClothingRule>(cr => cr.Clothes == "Støvler" && cr.Id.Equals(guid))));
            Assert.IsTrue(isUpdatedRule);
        }
        public async Task TestCreateAndUpdateRules()
        {
            var mockRuleRepository         = new Mock <IClothingRuleRepository>();
            var mockWeatherForecastService = new Mock <IWeatherForecastService>();

            mockRuleRepository.Setup(rr => rr.Create(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            var service     = new ClothingRecommendationService(mockWeatherForecastService.Object, mockRuleRepository.Object);
            var id          = "b5b6c634-bc43-4c41-8d90-74c05c5567df";
            var newrule     = new ClothingRule(150, 350, true, "BurnFeelsSoGood", new Guid(id));
            var ruleCreated = await service.CreateRule(newrule);

            Assert.IsTrue(ruleCreated);
            mockRuleRepository.Setup(rr => rr.Update(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            mockRuleRepository.Verify(rr => rr.Update(It.Is <ClothingRule>(c => c.Clothes == "BurnFeelsSoGood")));


            var ruleUpdate  = new ClothingRule(160, 370, true, "AllTheBurns", new Guid(id));
            var ruleUpdated = await service.UpdateRule(ruleUpdate);

            Assert.IsTrue(ruleUpdated);
            var wantedtemp = 160;

            mockRuleRepository.Verify(rr => rr.Update(It.Is <ClothingRule>(c => c.Clothes == "AllTheBurns" && c.Id == new Guid(id))));
            mockRuleRepository.Verify(rr => rr.Update(It.Is <ClothingRule>(c => c.FromTemperature == wantedtemp)));
        }
Пример #3
0
        public async Task TestUpdateRule()
        {
            var id            = "5c49da69-ec97-4882-ba23-7535de7f16a3";
            var clothingRule1 = new ClothingRule(10, 20, null, "bukse", new Guid(id));
            var clothingRule2 = new ClothingRule(5, 15, null, "bukse", new Guid(id));

            var mockIWeatherForecastService = new Mock <IWeatherForecastService>();
            var mockIClothingRuleRepository = new Mock <IClothingRuleRepository>();

            mockIClothingRuleRepository
            .Setup(crr => crr.Create(It.IsAny <ClothingRule>()))
            .ReturnsAsync(1);

            var ClothingRuleRecService = new ClothingRecommendationService(mockIWeatherForecastService.Object, mockIClothingRuleRepository.Object);

            var create = await ClothingRuleRecService.CreateOrUpdateRule(clothingRule1);

            Assert.AreEqual(true, create);

            mockIClothingRuleRepository.Verify(c => c.Create(It.Is <ClothingRule>(c => c.FromTemperature == 10)), Times.AtMost(1));


            mockIClothingRuleRepository
            .Setup(u => u.Update(It.IsAny <ClothingRule>()))
            .ReturnsAsync(1);

            var update = await ClothingRuleRecService.CreateOrUpdateRule(clothingRule2);

            Assert.AreEqual(true, update);
            mockIClothingRuleRepository.Verify(u => u.Update(It.Is <ClothingRule>(u => u.FromTemperature == 5)), Times.AtMost(1));
        }
Пример #4
0
        public async Task TestCreateOrUpdateRule()
        {
            //arrange
            var mockClothingRuleRepository = new Mock <IClothingRuleRepository>();
            var mockWeatherFcService       = new Mock <IWeatherForecastService>();

            mockClothingRuleRepository.Setup(crr => crr.GetRulesByUser(It.IsAny <Guid?>()))
            .ReturnsAsync(new[]
            {
                new ClothingRule(-20, 10, null, "Bobledress"),
                new ClothingRule(10, 20, null, "Bukse og genser"),
                new ClothingRule(20, 40, null, "kjole"),
            });

            mockClothingRuleRepository.Setup(crr => crr.Create(It.IsAny <ClothingRule>())).ReturnsAsync(1);

            mockClothingRuleRepository.Setup(crr => crr.Update(It.IsAny <ClothingRule>())).ReturnsAsync(0);

            //act

            var newClothingRule = new ClothingRule(18, 28, null, "Sommerkjole");
            // var newClothingRule2 = new ClothingRule(0, 7, null, "Pelskåpe");


            var service = new ClothingRecommendationService(mockWeatherFcService.Object, mockClothingRuleRepository.Object);

            var rowWasAffected = await service.CreateOrUpdateRule(newClothingRule);

            //assert
            Assert.AreEqual(true, rowWasAffected);
            mockClothingRuleRepository.Verify(crr => crr.Create(newClothingRule));
        }
        public async Task TestInvalid()
        {
            var mockRuleRepository = new Mock <IClothingRuleRepository>();
            var mockWeatherServce  = new Mock <IWeatherForecastService>();

            mockRuleRepository.Setup(rr => rr.Create(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            var invalidrule = new ClothingRule(-100000000, -0, null, null, null);
            var service     = new ClothingRecommendationService(mockWeatherServce.Object, mockRuleRepository.Object);
            var isCreated   = await service.CreateRule(invalidrule);

            Assert.IsFalse(isCreated);
        }
        public async Task TestCreateRule()
        {
            var mockRuleRepository         = new Mock <IClothingRuleRepository>();
            var mockWeatherForecastService = new Mock <IWeatherForecastService>();


            mockRuleRepository.Setup(rr => rr.Create(It.IsAny <ClothingRule>())).ReturnsAsync(1);
            var service = new ClothingRecommendationService(mockWeatherForecastService.Object, mockRuleRepository.Object);
            var newRule = new ClothingRule(100, 200, false, "bærepose");

            var ruleCreated = await service.CreateRule(newRule);

            Assert.IsTrue(ruleCreated);
            mockRuleRepository.Verify(rr => rr.Create(It.Is <ClothingRule>(c => c.Clothes == "bærepose" && c.IsRaining == false)));
        }
Пример #7
0
        public async Task TestInvalidLatitudePosition()
        {
            var mockIClothingRuleRepository = new Mock <IClothingRuleRepository>();
            var mockIWeatherForecastService = new Mock <IWeatherForecastService>();

            var timeFrom = new DateTime(2000, 01, 01);
            var timeTo   = new DateTime(2010, 01, 01);

            var timePeriod = new TimePeriod(timeFrom, timeTo);
            var location   = new Location(null, null);

            var clothingService = new ClothingRecommendationService(mockIWeatherForecastService.Object, mockIClothingRuleRepository.Object);
            var clothingRequest = new ClothingRecommendationRequest(timePeriod, location);

            Assert.ThrowsAsync <NotAValidLocationException>(async() => await clothingService.GetClothingRecommendation(clothingRequest));
        }
        public async Task TestATimeThereIsNoForecastFor()
        {
            // arrange
            var testDate     = new DateTime(2000, 1, 1, 10, 0, 0);
            var testPeriod   = new TimePeriod(testDate, testDate.AddHours(10));
            var testLocation = new Location(59, 10);

            var mockWeatherForecastService = new Mock <IWeatherForecastService>();
            var mockClothingRuleRepository = new Mock <IClothingRuleRepository>();

            mockClothingRuleRepository
            .Setup(crr => crr.GetRulesByUser(It.IsAny <Guid?>()))
            .ReturnsAsync(new[]
            {
                new ClothingRule(-20, 10, null, "Bobledress"),
                new ClothingRule(10, 20, null, "Bukse og genser"),
                new ClothingRule(20, 40, null, "T-skjore og shorts"),
            });


            mockWeatherForecastService
            .Setup(fs => fs.GetAllPlaces())
            .Returns(new[] { new Place("", "", "", "Larvik", new Location(59, 0)), });

            mockWeatherForecastService
            .Setup(fs => fs.GetWeatherForecast(It.IsAny <Place>()))
            .ReturnsAsync(new WeatherForecast(new[] {
                new TemperatureForecast(
                    25,
                    new DateTime(2010, 1, 1, 12, 0, 0),
                    new DateTime(2010, 1, 1, 14, 0, 0)),
            }));

            // act
            var request        = new ClothingRecommendationRequest(testPeriod, testLocation);
            var service        = new ClothingRecommendationService(mockWeatherForecastService.Object, mockClothingRuleRepository.Object);
            var recommendation = await service.GetClothingRecommendation(request);

            // assert
            Assert.IsNull(recommendation);
            //var exception = Assert.ThrowsAsync<CannotGiveMinOrMaxWithNoNumbersException>(
            //    () => service.GetClothingRecommendation(request));
            //Assert.IsInstanceOf<CannotGiveMinOrMaxWithNoNumbersException>(exception);
            //Assert.That(recommendation.Rules, Has.Exactly(0).Items);
        }
        public async Task TestHappyCase()
        {
            // arrange
            var testDate     = new DateTime(2000, 1, 1, 10, 0, 0);
            var testPeriod   = new TimePeriod(testDate, testDate.AddHours(10));
            var testLocation = new Location(59, 10);

            var mockWeatherForecastService = new Mock <IWeatherForecastService>();
            var mockClothingRuleRepository = new Mock <IClothingRuleRepository>();

            mockClothingRuleRepository
            .Setup(crr => crr.GetRulesByUser(It.IsAny <Guid?>()))
            .ReturnsAsync(new[]
            {
                new ClothingRule(-20, 10, null, "Bobledress"),
                new ClothingRule(10, 20, null, "Bukse og genser"),
                new ClothingRule(20, 40, null, "T-skjore og shorts"),
            });


            mockWeatherForecastService
            .Setup(fs => fs.GetAllPlaces())
            .Returns(new[] { new Place("", "", "", "Andeby", new Location(59.1f, 10.1f)), });

            mockWeatherForecastService
            .Setup(fs => fs.GetWeatherForecast(It.IsAny <Place>()))
            .ReturnsAsync(new WeatherForecast(new[] {
                new TemperatureForecast(25, testDate.AddHours(2), testDate.AddHours(4)),
            }));

            // act
            var request = new ClothingRecommendationRequest(testPeriod, testLocation);
            var service = new ClothingRecommendationService(
                mockWeatherForecastService.Object,
                mockClothingRuleRepository.Object);
            var recommendation = await service.GetClothingRecommendation(request);

            // assert
            Assert.AreEqual("Andeby", recommendation.Place.Name);
            Assert.That(recommendation.Rules, Has.Exactly(1).Items);
            var rule = recommendation.Rules.First();

            Assert.AreEqual("T-skjore og shorts", rule.Clothes);
        }
Пример #10
0
        public async Task TestCreateRule()
        {
            var clothingRule = new ClothingRule(10, 20, null, "bukse");

            var mockIWeatherForecastService = new Mock <IWeatherForecastService>();
            var mockIClothingRuleRepository = new Mock <IClothingRuleRepository>();

            mockIClothingRuleRepository
            .Setup(crr => crr.Create(It.IsAny <ClothingRule>()))
            .ReturnsAsync(1);


            var clothingrec = new ClothingRecommendationService(mockIWeatherForecastService.Object, mockIClothingRuleRepository.Object);

            var create = await clothingrec.CreateOrUpdateRule(clothingRule);

            Assert.IsTrue(create);
            mockIClothingRuleRepository.Verify(crr => crr.Create(It.Is <ClothingRule>(cr => cr.Clothes == "bukse")), Times.AtMost(1));
        }
        public async Task TestLocationIsTooFarFromAnyPlaceSoWeShouldNotGetAnyRecommendations()
        {
            // arrange
            var testDate     = new DateTime(2000, 1, 1, 10, 0, 0);
            var testPeriod   = new TimePeriod(testDate, testDate.AddHours(10));
            var testLocation = new Location(59, -10);

            var mockWeatherForecastService = new Mock <IWeatherForecastService>();
            var mockClothingRuleRepository = new Mock <IClothingRuleRepository>();

            mockClothingRuleRepository
            .Setup(crr => crr.GetRulesByUser(It.IsAny <Guid?>()))
            .ReturnsAsync(new[]
            {
                new ClothingRule(-20, 10, null, "Bobledress"),
                new ClothingRule(10, 20, null, "Bukse og genser"),
                new ClothingRule(20, 40, null, "T-skjore og shorts"),
            });


            mockWeatherForecastService
            .Setup(fs => fs.GetAllPlaces())
            .Returns(new[] { new Place("", "", "", "Larvik", new Location(59, 0)), });

            mockWeatherForecastService
            .Setup(fs => fs.GetWeatherForecast(It.IsAny <Place>()))
            .ReturnsAsync(new WeatherForecast(new[] {
                new TemperatureForecast(25, testDate.AddHours(2), testDate.AddHours(4)),
            }));

            // act
            var request = new ClothingRecommendationRequest(testPeriod, testLocation);
            var service = new ClothingRecommendationService(
                mockWeatherForecastService.Object,
                mockClothingRuleRepository.Object);
            var recommendation = await service.GetClothingRecommendation(request);

            // assert
            Assert.That(recommendation.Rules, Has.Exactly(0).Items);
        }
Пример #12
0
 public ClothingRuleController(ClothingRecommendationService service)
 {
     _service = service;
 }