public void ThrowException_WhenExternalPurchaseAndNoRequisitionersInApproval()
            {
                // Arrange
                var cost = MockCost();

                cost.IsExternalPurchases = true;
                EFContext.SaveChanges();

                var approvals = new List <Approval>
                {
                    new Approval
                    {
                        Type            = ApprovalType.IPM,
                        ApprovalMembers = new List <ApprovalMember> {
                            new ApprovalMember()
                        }
                    },
                    new Approval
                    {
                        Type            = ApprovalType.Brand,
                        ApprovalMembers = new List <ApprovalMember> {
                            new ApprovalMember()
                        },
                        Requisitioners = new List <Requisitioner>()
                    }
                };

                // Act
                // Assert
                ApprovalService.Awaiting(a => a.SubmitApprovals(cost, CostUser, approvals, BuType.Pg)).ShouldThrow <Exception>();
            }
            public void ThrowException_WhenApprovalsCollectionIsNull()
            {
                // Arrange
                var cost = MockCost();

                // Act
                // Assert
                ApprovalService.Awaiting(a => a.SubmitApprovals(cost, CostUser, null, BuType.Pg)).ShouldThrow <ArgumentNullException>();
            }
            public void ThrowException_WhenCountOfApprovalsIsMoreThenTwo()
            {
                // Arrange
                var cost     = MockCost();
                var approvas = new bool[3].Select(i => new Approval()).ToList();

                // Act
                // Assert
                ApprovalService.Awaiting(a => a.SubmitApprovals(cost, CostUser, approvas, BuType.Pg)).ShouldThrow <InvalidOperationException>();
            }
            public void ThrowException_WhenNoApproversInApproval()
            {
                // Arrange
                var cost      = MockCost();
                var approvals = new List <Approval>
                {
                    new Approval
                    {
                        Type            = ApprovalType.IPM,
                        ApprovalMembers = new List <ApprovalMember>()
                    }
                };

                // Act
                // Assert
                ApprovalService.Awaiting(a => a.SubmitApprovals(cost, CostUser, approvals, BuType.Pg)).ShouldThrow <Exception>();
            }