private Assessment SetupSuccessfulPost(Assessment localAssessment)
        {
            var clonedLocalAssessment = new Assessment {
                ObjectId = localAssessment.ObjectId
            };
            var savedAssessment = CreateSavedAssessment();
            var url             = Connection.GenerateTableUrl <Assessment>();

            _jsonSerializer.Clone(localAssessment).Returns(clonedLocalAssessment);
            var serializedObject = $"{savedAssessment.ObjectId}-serialized";

            _jsonSerializer.Serialize(clonedLocalAssessment).Returns(serializedObject);
            var jsonResponse = $"{savedAssessment.ObjectId}-response";

            _restServiceCaller.Post(url, Arg.Any <Dictionary <string, string> >(), serializedObject)
            .Returns(Task.FromResult(jsonResponse));
            _responseParser.Parse <Assessment>(jsonResponse).Returns(BackendlessResponse <Assessment> .Success(savedAssessment));
            return(savedAssessment);
        }
        /// <summary>
        /// Flattens the policies by branches.
        /// </summary>
        /// <param name="policies">Policies</param>
        /// <param name="serializer">Json serializer</param>
        /// <returns>Flattened policies</returns>
        public static IEnumerable <Policy> FlattenBranches(this IEnumerable <Policy> policies, IJsonSerializer serializer)
        {
            var newPolicies = new List <Policy>();

            foreach (var policy in policies)
            {
                if (policy.Branches != null)
                {
                    foreach (var branch in policy.Branches)
                    {
                        var newPolicy = serializer.Clone(policy);
                        newPolicy.Branch   = branch;
                        newPolicy.Branches = null;
                        newPolicies.Add(newPolicy);
                    }

                    continue;
                }

                newPolicies.Add(policy);
            }

            return(newPolicies);
        }
        /// <summary>
        /// Flattens the policies by repositories.
        /// </summary>
        /// <param name="policies">Policies</param>
        /// <param name="serializer">Json serializer</param>
        /// <returns>Flattened policies</returns>
        public static IEnumerable <Policy> FlattenRepositories(this IEnumerable <Policy> policies, IJsonSerializer serializer)
        {
            var newPolicies = new List <Policy>();

            foreach (var policy in policies)
            {
                if (policy.Repositories != null)
                {
                    foreach (var repository in policy.Repositories)
                    {
                        var newPolicy = serializer.Clone(policy);
                        newPolicy.Repository   = repository;
                        newPolicy.Repositories = null;
                        newPolicies.Add(newPolicy);
                    }

                    continue;
                }

                newPolicies.Add(policy);
            }

            return(newPolicies);
        }