public async Task GetFarmProduct_should_load_a_previously_saved_entity()
        {
            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenAsyncSession())
                {
                    // Arrange
                    var farmProduct = new FarmProduct("NPK", CoverageType.LitresPerHectare);
                    await session.StoreAsync(farmProduct);

                    await session.SaveChangesAsync();
                }

                // Act
                using (var session = store.OpenAsyncSession())
                {
                    var service = GetFarmProductService(session);
                    var actual  = await service.GetAsync("FarmProducts-1");

                    // Assert
                    actual.Name.Should().Be("NPK");
                    actual.CoverageType.Should().Be(CoverageType.LitresPerHectare);
                }
            }
        }
예제 #2
0
        public FarmProduct GetFarmProduct(int id)
        {
            FarmSaleDBEntities1 db          = new FarmSaleDBEntities1();
            FarmProduct         farmProduct = db.FarmProducts.Where(fp => fp.farmProductID == id).FirstOrDefault();

            return(farmProduct);
        }
        public async Task SaveAsync_should_only_save_the_entity_once()
        {
            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenAsyncSession())
                {
                    // Arrange
                    const string FARM_PRODUCTS_ID_1 = "FarmProducts-1";
                    var          farmProduct        = new FarmProduct("NPK", CoverageType.GramsPerPlant);
                    var          service            = GetFarmProductService(session);

                    // Act
                    farmProduct.Id.Should().BeNullOrEmpty();

                    var model1 = await service.SaveAsync(farmProduct);

                    model1.Entity.Id.Should().Be(FARM_PRODUCTS_ID_1);
                    model1.Message.Should().StartWith("Created");

                    var model2 = await service.SaveAsync(farmProduct);

                    model2.Entity.Id.Should().Be(FARM_PRODUCTS_ID_1);
                    model2.Message.Should().StartWith("Updated");

                    var model3 = await service.SaveAsync(farmProduct);

                    model3.Entity.Id.Should().Be(FARM_PRODUCTS_ID_1);
                    model3.Message.Should().StartWith("Updated");
                }
            }
        }
예제 #4
0
        public void RemoveFarmProduct(int id)
        {
            FarmSaleDBEntities1 db          = new FarmSaleDBEntities1();
            FarmProduct         farmProduct = db.FarmProducts.Where(fp => fp.farmProductID == id).FirstOrDefault();

            db.FarmProducts.Remove(farmProduct);
            db.SaveChanges();
        }
예제 #5
0
        public void GetCoverageText_should_return_empty_string_for_no_coverages()
        {
            // Arrange
            var sut = new FarmProduct("123", "Test", CoverageType.KgPerHectare);

            // Assert
            sut.Coverages.Should().HaveCount(0);
        }
예제 #6
0
        private void Init()
        {
            var farmProduct = new FarmProduct("NPK", CoverageType.LitresPerHectare);

            farmProduct.AddCoverage(1, 15);
            farmProduct.AddCoverage(2, 10);
            farmProduct.AddCoverage(3, 10);

            _service.SaveAsync(farmProduct).Wait();
        }
예제 #7
0
        public void AddFarmProduct(int farmID, int productID)
        {
            FarmSaleDBEntities1 db          = new FarmSaleDBEntities1();
            FarmProduct         farmProduct = new FarmProduct();

            farmProduct.farmID    = farmID;
            farmProduct.productID = productID;
            db.FarmProducts.Add(farmProduct);
            db.SaveChanges();
        }
예제 #8
0
        public void CoverageText_should_return_formatted_text_for_coverage_with_single_year()
        {
            // Arrange
            var sut = new FarmProduct("123", "Test", CoverageType.LitresPerHectare);

            sut.AddCoverage(1, 55);

            // Act
            var actual = sut.CoverageText;

            // Assert
            actual.Should().Be("Year 1 and onwards: 55 lt/ha");
        }
예제 #9
0
        public void AddCoverage_should_add_a_coverage_to_the_FarmProduct()
        {
            // Arrange
            var          sut      = new FarmProduct("123", "Test", CoverageType.KgPerHectare);
            const int    year     = 1;
            const double quantity = 100;

            // Act
            sut.AddCoverage(year, quantity);

            // Assert
            sut.Coverages.Should().HaveCount(1);
            sut.Coverages[0].Year.Should().Be(1);
            sut.Coverages[0].Quantity.Should().Be(100);
        }
예제 #10
0
        public void CoverageText_should_return_formatted_text_for_coverages_with_multiple_years()
        {
            // Arrange
            var sut = new FarmProduct("123", "Test", CoverageType.KgPerHectare);

            sut.AddCoverage(1, 500);
            sut.AddCoverage(2, 750);
            sut.AddCoverage(3, 1000);

            // Act
            var actual = sut.CoverageText;

            // Assert
            actual.Should().Be("Year 1: 500 kg/ha, Year 2: 750 kg/ha, Year 3 and onwards: 1000 kg/ha");
        }
        public async Task SaveAsync_should_update_an_existing_entity()
        {
            const string FARM_PRODUCTS_ID_1 = "FarmProducts-1";

            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenAsyncSession())
                {
                    // Arrange
                    var farmProduct = new FarmProduct("NPK", CoverageType.GramsPerPlant);
                    farmProduct.AddCoverage(1, 100);

                    await session.StoreAsync(farmProduct);

                    await session.SaveChangesAsync();

                    // Act
                    var service = GetFarmProductService(session);
                    var actual  = await service.GetAsync(FARM_PRODUCTS_ID_1);

                    actual.Name = "Updated";
                    var model = await service.SaveAsync(actual);

                    model.Entity.Id.Should().Be(FARM_PRODUCTS_ID_1);
                }

                using (var session = store.OpenAsyncSession())
                {
                    // Assert
                    var service = GetFarmProductService(session);
                    var actual  = await service.GetAsync(FARM_PRODUCTS_ID_1);

                    actual.Name.Should().Be("Updated");
                    actual.Coverages.Should().HaveCount(1);
                }
            }
        }
        public async Task SaveAsync_should_save_a_farm_product()
        {
            const string FARM_PRODUCTS_ID_1 = "FarmProducts-1";

            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenAsyncSession())
                {
                    // Arrange
                    var farmProduct = new FarmProduct(null, "NPK", CoverageType.GramsPerPlant);
                    var sut         = GetFarmProductService(session);

                    // Act
                    var model = await sut.SaveAsync(farmProduct);

                    // Assert
                    var actual = await session.LoadAsync <FarmProduct>(FARM_PRODUCTS_ID_1);

                    actual.Name.Should().Be("NPK");
                    actual.CoverageType.Should().Be(CoverageType.GramsPerPlant);
                    model.Message.Should().Be("Created Farm Product with Id:1");
                }
            }
        }
예제 #13
0
 public async Task <SaveResponse> SaveAsync(FarmProduct entity)
 {
     return(await base.SaveAsync(entity));
 }
예제 #14
0
        public async Task <IActionResult> Post([FromBody] FarmProduct farmProduct)
        {
            var data = await _service.SaveAsync(farmProduct);

            return(Ok(data));
        }