コード例 #1
0
        public async Task WhenIAddTheFollowingBudgetItems(Table table)
        {
            var features = Resolve <BudgetClassFeatures>();

            var dataSet = table.CreateSet <BudgetItemData>();

            foreach (var group in dataSet.GroupBy(bid => bid.BudgetClass))
            {
                var budgetClass = await features.FindBudgetClassByNameAsync(group.Key);

                budgetClass.Should().NotBeNull($@"because BudgetClass ""{group.Key}"" MUST exist");

                var mapper = new BudgetItemMapper();

                var items = group.Select(bid => mapper.CreateEntity(bid));

                var errors = await features.AddBudgetItemsRangeAsync(budgetClass, items);

                errors.Should().BeEmpty();
            }
        }
コード例 #2
0
        public async Task WhenIUpdateBudgetClassToThisItemList(string className, Table table)
        {
            var features = Resolve <BudgetClassFeatures>();

            var budgetClass = await features.FindBudgetClassByNameAsync(className);

            budgetClass.Should().NotBeNull();

            var dataSet = table.CreateSet <BudgetItemData>();

            var itemDict = budgetClass.BudgetItems.ToDictionary(bi => bi.Name);

            var mapper = new BudgetItemMapper();

            foreach (BudgetItemData data in dataSet)
            {
                if (itemDict.TryGetValue(data.FindName, out BudgetItem entity))
                {
                    mapper.UpdateEntity(data, entity);
                    itemDict.Remove(data.FindName);
                }
                else
                {
                    entity = mapper.CreateEntity(data);
                    budgetClass.BudgetItems.Add(entity);
                }
            }

            foreach (var item in itemDict)
            {
                budgetClass.BudgetItems.Remove(item.Value);
            }

            var errors = await features.ModifyBudgetClassAsync(budgetClass);

            errors.Should().BeEmpty();
        }