Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="poco">If Null Default Value Will Be Used For Members</param>
        /// <returns>A List Of Advance Members Of T</returns>
        public static List <AdvanceMember> GetAdvanceMembersForDynamic <T>(T poco = null) where T : class
        {
            if (poco == null)
            {
                throw new BadCodeException($"Can Get The Properties Of The Dynamic Type {typeof(T).FullName} Because No Properties Has Been Assigned to the object");
            }

            var list = new List <AdvanceMember>()
            {
            };


            var props = DynamicObjectHelper.GetProperties(poco as ExpandoObject);

            props.ForEach(delegate(KeyValuePair <string, object> pair)
            {
                var advance = new AdvanceMember
                {
                    Member = new DynamicMember()
                    {
                        Type = pair.Value.GetType(), Name = pair.Key, CanWrite = true, CanRead = true
                    },
                    Value = pair.Value,
                    SqlCustomAttritube = new SqlColumnAttritube(),
                    Validation         = new DataValidationAttritube(),
                };


                list.Add(advance);
            });

            return(list);
        }
Beispiel #2
0
 public void BindData(DynamicObjectHelper dynamicObject)
 {
     this.dynamicObject = dynamicObject;
     this.splitContainerControl1.Panel1.Controls.Clear();
     this.splitContainerControl1.Panel1.Controls.Add(grid);
     grid.GetType().InvokeMember("BindData", BindingFlags.Default | BindingFlags.InvokeMethod, null, grid, new object[] { this.dynamicObject });
     this.dataDetailsBoard1.CreateLayoutEditor(this.dynamicObject);
 }
        public void ToExpandoObjectConvertsNullDynamicToNullExpandoObject()
        {
            // arrange

            // act
            var destinationExpandoObject = DynamicObjectHelper.ToExpandoObject(null);

            // assert
            Assert.IsNull(destinationExpandoObject);
        }
        public void HasPropertyObjectIsNullReturnsFalse()
        {
            // arrange

            // act
            var hasProperty = DynamicObjectHelper.HasProperty(null, "Property");

            // assert
            Assert.IsFalse(hasProperty);
        }
Beispiel #5
0
    public void GetPlaceHolder_Ok()
    {
        var ph = Utility.GetPlaceHolder(typeof(Foo), "Name");

        Assert.Equal("不可为空", ph);

        // 动态类型
        ph = Utility.GetPlaceHolder(DynamicObjectHelper.CreateDynamicType(), "Name");
        Assert.Null(ph);
    }
        public void HasPropertyPropertyNotExistsOnDynamicObjectReturnsFalse()
        {
            // arrange
            var sourceDynamicObject = new { };

            // act
            var hasProperty = DynamicObjectHelper.HasProperty(sourceDynamicObject, "Property");

            // assert
            Assert.IsFalse(hasProperty);
        }
        public void HasPropertyPropertyExistsOnDynamicObjectReturnsTrue()
        {
            // arrange
            var sourceDynamicObject = new { Property = "Value" };

            // act
            var hasProperty = DynamicObjectHelper.HasProperty(sourceDynamicObject, "Property");

            // assert
            Assert.IsTrue(hasProperty);
        }
Beispiel #8
0
        public static void Configure(this IHateoasContainer source, dynamic vars)
        {
            var container = source as HateoasContainer;

            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            container.Configuration.Extend((ExpandoObject)DynamicObjectHelper.ToExpandoObject(vars));
            container.Update();
        }
        public void HasPropertyPropertyNotExistsOnExpandoObjectReturnsFalse()
        {
            // arrange
            var sourceDynamicObject      = new { };
            var destinationExpandoObject = DynamicObjectHelper.ToExpandoObject(sourceDynamicObject);

            // act
            var hasProperty = DynamicObjectHelper.HasProperty(destinationExpandoObject, "Property");

            // assert
            Assert.IsFalse(hasProperty);
        }
        public void ToExpandoObjectReturnsExpandObjectIfDynamicObjectAlreadyIsExpandoObject()
        {
            // arrange
            var sourceDynamicObject = new { };
            var sourceExpandoObject = DynamicObjectHelper.ToExpandoObject(sourceDynamicObject);

            // act
            var destinationExpandoObject = DynamicObjectHelper.ToExpandoObject(sourceExpandoObject);

            // assert
            Assert.IsNotNull(destinationExpandoObject);
            Assert.AreSame(sourceExpandoObject, destinationExpandoObject);
        }
 public object GetValue <T>(T instanceOfObject, TypeAccessor accessor) where T : class
 {
     if (instanceOfObject is IDynamicMetaObjectProvider dynamicInstance)
     {
         var helper = new DynamicObjectHelper();
         helper.TryGetMember(dynamicInstance, Name, out var value);
         return(value);
     }
     if (PropertyInfo != null) // SUPPORT FOR IOS
     {
         return(PropertyInfo.GetValue(instanceOfObject));
     }
     return(accessor[instanceOfObject, Name]);
 }
        public void BindData(DynamicObjectHelper dynamicObject)
        {
            #region 绑定数据源
            this.dynamicObject = dynamicObject;
            this.gridView1.Columns.Clear();

            this.gridControl1.DataSource = this.dynamicObject.DataList;
            #endregion

            this.BindViewCombo();//设定列表

            this.gridView1.RefreshData();

            this.gridView1.MoveFirst();
        }
 public object GetValue(object instanceOfObject, TypeAccessor accessor)
 {
     if (instanceOfObject is IDynamicMetaObjectProvider dynamicInstance)
     {
         var helper = new DynamicObjectHelper();
         helper.TryGetMember(dynamicInstance, Name, out var value);
         return(value);
     }
     if (PropertyInfo != null) // SUPPORT FOR IOS
     {
         return(PropertyInfo.GetValue(instanceOfObject));
     }
     accessor.IsNullThrow(nameof(accessor)); // TODO :: UNIT TEST ENSURE IT THROWS
     return(accessor[instanceOfObject, Name]);
 }
Beispiel #14
0
        public void BindData(DynamicObjectHelper dynamicObject)
        {
            if (dynamicObject.objclass != null)
            {
                this.bindingSource.DataSource = dynamicObject.objclass;
            }

            foreach (BaseViewControl baseViewControl in subclassviewList)
            {
                int    column_id   = dynamicObject.SubRelatedClass.Find(obj => obj.Sub_class_id == baseViewControl.dynamicObject.classDesc.Id).Main_class_column_id;
                string column_name = dynamicObject.ColumnList.Find(obj => obj.Id == column_id).Column_name;
                object id          = dynamicObject.objclass.GetType().GetProperty(column_name).GetValue(dynamicObject.objclass);

                baseViewControl.RefreshView(id);
            }
        }
        public object GetValue(object instanceOfObject)
        {
            if (instanceOfObject is IDynamicMetaObjectProvider dynamicInstance)
            {
                var helper = new DynamicObjectHelper();
                helper.TryGetMember(dynamicInstance, Name, out var value);
                return(value);
            }
            if (PropertyInfo != null) // SUPPORT FOR IOS
            {
                return(PropertyInfo.GetValue(instanceOfObject));
            }
            var accessor = TypeAccessor.Create(instanceOfObject.GetType(), true);

            return(accessor[instanceOfObject, Name]);
        }
        public void ToExpandoObjectConvertsDynamicToExpandobjectAndIsUsableAsIDictionary()
        {
            // arrange
            const string property1Value      = "";
            const int    property2Value      = 0;
            var          sourceDynamicObject = new { Property1 = property1Value, Property2 = property2Value };

            // act
            var destinationExpandoObject = DynamicObjectHelper.ToExpandoObject(sourceDynamicObject);

            // assert
            Assert.IsNotNull(destinationExpandoObject);
            var destinationDictionaryObject = (IDictionary <string, object>)destinationExpandoObject;

            Assert.AreEqual(property1Value, destinationDictionaryObject["Property1"]);
            Assert.AreEqual(property2Value, destinationDictionaryObject["Property2"]);
        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns>A List Of Advance Members Of T</returns>
        public static List <MemberWrapper> GetMemberWrappers <T>(T dynamicObject) where T : IDynamicMetaObjectProvider
        {
            var list = new List <MemberWrapper>()
            {
            };

            var dynamicObjectHelper = new DynamicObjectHelper();

            dynamicObjectHelper.GetDynamicMemberNameAndValues(dynamicObject).ForEach(
                delegate(KeyValuePair <string, object> pair)
            {
                var advance = new MemberWrapper(pair.Key, pair.Value == null ? typeof(object) : pair.Value.GetType())
                {
                };
                list.Add(advance);
            });

            return(list);
        }
        public string Execute(IDictionary <string, string> values, Workspaces.IWorkspace theWorkspace)
        {
            string roles;
            string resourceDefinition;

            values.TryGetValue("Roles", out roles);
            values.TryGetValue("ResourceXml", out resourceDefinition);

            resourceDefinition = resourceDefinition.Unescape();

            if (string.IsNullOrEmpty(roles) || string.IsNullOrEmpty(resourceDefinition))
            {
                throw new InvalidDataContractException("Roles or ResourceXml is missing");
            }

            var compiledResources = DynamicObjectHelper.GenerateObjectGraphFromString(resourceDefinition);

            if (compiledResources.Count == 0)
            {
                return(string.Format("<{0}>{1}</{0}>", "Result", Resources.CompilerError_TerminationFailed));
            }

            var resource = compiledResources.First() as DynamicService;

            if (resource == null)
            {
                return(string.Format("<{0}>{1}</{0}>", "Result", Resources.CompilerError_TerminationFailed));
            }

            var service = ExecutableServiceRepository.Instance.Get(theWorkspace.ID, resource.ID);

            if (service == null)
            {
                return(string.Format("<{0}>{1}</{0}>", "Result", Resources.CompilerError_TerminationFailed));
            }

            var task = service.Terminate();

            task.Wait();

            return(string.Format("<{0}>{1}</{0}>", "Result", Resources.CompilerMessage_TerminationSuccess));
        }
Beispiel #19
0
    public void CreateType_Ok()
    {
        // 创建动态类型基类是 DynamicObject
        var instanceType = DynamicObjectHelper.CreateDynamicType();

        Assert.NotNull(instanceType);
        Assert.Equal(typeof(DynamicObject), instanceType.BaseType);

        // 创建动态类型实例
        var instance = DynamicObjectHelper.CreateDynamicObject();

        Assert.NotNull(instance);

        var properties = instance.GetType().GetProperties().Select(p => p.Name);

        Assert.Contains(nameof(DynamicObject.DynamicObjectPrimaryKey), properties);

        // Utility
        var v = Utility.GetPropertyValue(instance, "Name");

        Assert.Null(v);
    }
        public Tuple <List <DbParameter>, string> BuildWhereClause(Func <string, object, DbParameter> GetNewParameter, ExpandoObject parameters, string additionalWhere = null)
        {
            var whereClause     = $" WHERE ";
            var startsWithWhere = (!string.IsNullOrEmpty(additionalWhere) && additionalWhere.Replace(" ", "").StartsWith("WHERE", StringComparison.OrdinalIgnoreCase));
            var endWithAnd      = (!string.IsNullOrEmpty(additionalWhere) && additionalWhere.Replace(" ", "").EndsWith("AND", StringComparison.OrdinalIgnoreCase));
            var startsWithAnd   = (!string.IsNullOrEmpty(additionalWhere) && additionalWhere.Replace(" ", "").StartsWith("AND", StringComparison.OrdinalIgnoreCase));
            var list            = new List <DbParameter>()
            {
            };

            var dictionary = DynamicObjectHelper.GetProperties(parameters);

            if (dictionary != null && dictionary.Any())
            {
                dictionary.ForEach(delegate(KeyValuePair <string, object> pair)
                {
                    if (pair.Value.GetType().IsTypeIEnumerable() && pair.Value.GetType() != typeof(string))
                    {
                        whereClause += $@"{pair.Key} IN (";

                        //if (pair.Value is IEnumerable<DateTime> dates)
                        //{
                        //      if (dates.IsNullOrEmpty())
                        //      {
                        //          whereClause = whereClause.ReplaceLastOccurrence($@" {pair.Key} IN (", string.Empty, StringComparison.OrdinalIgnoreCase);
                        //      }
                        //      else
                        //      {
                        //          for (var i = 0; i < (dates ?? throw new InvalidOperationException()).Count(); i++)
                        //          {
                        //              whereClause += $"@{pair.Key + i}, ";
                        //              list.Add(GetNewParameter(pair.Key + i, dates.ToList()[i]));

                        //          }
                        //          whereClause = whereClause.ReplaceLastOccurrence(",", ") AND ", StringComparison.OrdinalIgnoreCase);
                        //      }
                        //}

                        var tempList = pair.Value as IEnumerable <object>;
                        if (tempList.IsNullOrEmpty())
                        {
                            whereClause = whereClause.ReplaceLastOccurrence($@" {pair.Key} IN (", string.Empty, StringComparison.OrdinalIgnoreCase);
                        }
                        else
                        {
                            for (var i = 0; i < (tempList ?? throw new InvalidOperationException()).Count(); i++)
                            {
                                whereClause += $"@{pair.Key + i}, ";
                                list.Add(GetNewParameter(pair.Key + i, tempList.ToList()[i]));
                            }
                            whereClause = whereClause.ReplaceLastOccurrence(",", ") AND ", StringComparison.OrdinalIgnoreCase);
                        }
                    }
                    else
                    {
                        whereClause += $@"{pair.Key} = @{pair.Key} AND ";
                        list.Add(GetNewParameter(pair.Key, pair.Value));
                    }
                });
                whereClause = whereClause.ReplaceLastOccurrence("AND", "", StringComparison.OrdinalIgnoreCase);

                if (startsWithWhere)
                {
                    additionalWhere = additionalWhere.ReplaceFirstOccurrence("WHERE", " ", StringComparison.OrdinalIgnoreCase);
                }
                if (endWithAnd)
                {
                    additionalWhere = additionalWhere.ReplaceLastOccurrence("AND", "", StringComparison.OrdinalIgnoreCase);
                }
                if (startsWithAnd)
                {
                    // additionalWhere = additionalWhere.ReplaceLastOccurrence("AND", "", StringComparison.OrdinalIgnoreCase);
                }
                else
                {
                    if (!string.IsNullOrEmpty(additionalWhere))
                    {
                        additionalWhere = $" AND {additionalWhere}";
                    }
                }

                whereClause += additionalWhere;
            }

            return(new Tuple <List <DbParameter>, string>(list, whereClause));
        }
        public void Init()
        {
            _mockGetProviders     = new Mock <IGetProviders>();
            _mockControllerHelper = new Mock <IControllerHelper>();
            _mockGetStandards     = new Mock <IGetStandards>();
            _mockGetFrameworks    = new Mock <IGetFrameworks>();
            _mockUrlHelper        = new Mock <IUrlHelper>();
            _mockUrlHelper.Setup(x => x.Link("GetProviderByUkprn", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/providers/{o.ukprn}"); });

            _sut = new ProvidersController(
                _mockGetProviders.Object,
                _mockControllerHelper.Object,
                _mockGetStandards.Object,
                _mockGetFrameworks.Object,
                Mock.Of <IApprenticeshipProviderRepository>()
                );

            _sut.Url = _mockUrlHelper.Object;
        }
Beispiel #22
0
        /// <summary>
        ///   Reads the file.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="excelFile">The excel file.</param>
        /// <param name="excelMapper">The excel mapper.</param>
        /// <param name="hasTitle">if set to <c>true</c> [has title].</param>
        /// <returns></returns>
        public IEnumerable <T> ReadFile <T>(FileStream excelFile, ExcelMapper excelMapper, bool hasTitle) where T : class
        {
            using (var doc = SpreadsheetDocument.Open(excelFile, false))
            {
                var config = new MapperConfiguration(cfg => cfg.CreateMap <List <dynamic>, IEnumerable <T> >());
                var mapper = config.CreateMapper();

                var workbookPart = doc.WorkbookPart;
                var sstpart      = workbookPart.GetPartsOfType <SharedStringTablePart>().First();
                var sst          = sstpart.SharedStringTable;

                var worksheetPart = workbookPart.WorksheetParts.First();
                var sheet         = worksheetPart.Worksheet;

                var rows = sheet.Descendants <Row>();

                var retObject = new List <ExpandoObject>();
                var rowsArray = rows.ToArray();

                for (var r = hasTitle ? 1 : 0; r < rowsArray.Length; r++)
                {
                    var row     = rowsArray[r];
                    var cs      = row.Elements <Cell>().ToArray();
                    var dataRow = new ExpandoObject() as IDictionary <string, object>;
                    for (var j = 0; j < cs.Length; j++)
                    {
                        var    c = cs[j];
                        object stgValue;

                        var cellReferenceLetter = new Regex("[A-Za-z]+").Match(c.CellReference).Value;
                        var excelMap            = excelMapper.Items.FirstOrDefault(a => a.From == cellReferenceLetter);

                        if (excelMap == null)
                        {
                            continue;
                        }

                        if (c.DataType != null && c.DataType == CellValues.SharedString)
                        {
                            var ssid = int.Parse(c.CellValue.Text);
                            var str  = sst.ChildElements[ssid].InnerText;
                            stgValue = str;
                        }
                        else
                        {
                            stgValue = c.CellValue?.Text;
                        }

                        object convertedValue;

                        switch (excelMap.Type)
                        {
                        case ExcelMapper.Type.Double:
                            convertedValue = Convert.ToDouble(stgValue ?? 0);
                            break;

                        case ExcelMapper.Type.Int:
                            convertedValue = Convert.ToInt32(stgValue ?? 0);
                            break;

                        case ExcelMapper.Type.String:
                            convertedValue = stgValue;
                            break;

                        default:
                            convertedValue = stgValue;
                            break;
                        }

                        var dataField = (IDictionary <string, object>)DynamicObjectHelper
                                        .GenerateNestedObject(excelMap.To ?? excelMap.From, convertedValue);

                        dataRow = DynamicObjectHelper
                                  .AddIDictionary((ExpandoObject)dataRow, (ExpandoObject)dataField);
                    }
                    retObject.Add((ExpandoObject)dataRow);
                }

                return(retObject.Select(c => mapper.Map <T>(c)));
            }
        }
        private static void SetPocoProperteyValue <T>(T poco, IDataReader reader, AdvanceMember p, TypeAccessor accessor, IJsonSerializer jsonSerializer = null, IXmlSerializer xmlSerializer = null, ICsvSerializer csvSerializer = null)
        {
            var isDynamic = (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(typeof(T)));



            var value = reader.GetValue(reader.GetOrdinal(p.GetActualMemberName()));

            if (isDynamic)
            {
                DynamicObjectHelper.AddProperty(poco as ExpandoObject, p.GetActualMemberName(), value);
                return;
            }

            if (value.GetType().Name != p.Member.Type.Name && value.GetType() != typeof(DBNull))
            {
                var type = p.Member.Type;
                if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
                {
                    type = Nullable.GetUnderlyingType(type);
                }
                if (type == null)
                {
                    type = p.Member.Type;
                }


                if (p?.SqlCustomAttritube?.SerializableType != null && p?.SqlCustomAttritube?.SerializableType != SerializableType.NONE)
                {
                    switch (p.SqlCustomAttritube.SerializableType)
                    {
                    case SerializableType.XML:
                        value = xmlSerializer?.DeserializeFromString(value.ToString(), type);
                        break;

                    case SerializableType.JSON:
                        value = jsonSerializer?.DeserializeFromString(value.ToString(), type);
                        break;

                    case SerializableType.CSV:
                        value = csvSerializer?.DeserializeFromString(value.ToString(), type);
                        break;

                    case SerializableType.NONE:
                        value = !type.IsEnum ? Convert.ChangeType(value, type, null) : System.Enum.Parse(type, value.ToString(), true);
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    value = !type.IsEnum ? Convert.ChangeType(value, type, null) : System.Enum.Parse(type, value.ToString(), true);
                }
            }
            try
            {
                accessor[poco, p.Member.Name] = value is DBNull ? null : value;
            }
            catch (Exception error)
            {
                // this property may not be settable
                Console.WriteLine(error.Message);
            }
        }
        public void Init()
        {
            _mockGetAssessmentOrgs = new Mock <IGetAssessmentOrgs>();
            _mockLogger            = new Mock <ILogger <AssessmentOrgsController> >();

            _mockUrlHelper = new Mock <IUrlHelper>();
            _mockUrlHelper.Setup(x => x.Link("GetAssessmentOrgById", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/assessment-organisations/{o.id}"); });
            _mockUrlHelper.Setup(x => x.Link("GetStandardById", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/Standards/{o.id}"); });
            _mockUrlHelper.Setup(x => x.Link("GetStandardsByAssessmentOrgId", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/assessment-organisations/{o.organisationId}/standards"); });

            _sut = new AssessmentOrgsController(
                _mockGetAssessmentOrgs.Object,
                _mockLogger.Object);

            _sut.Url = _mockUrlHelper.Object;
        }
Beispiel #25
0
        public void CreateLayoutEditor(DynamicObjectHelper dynamicObject)
        {
            if (dynamicObject.classDesc == null)
            {
                return;
            }

            this.dynamicObject       = dynamicObject;
            bindingSource.DataSource = dynamicObject.objclass;

            int group_idx = 1;

            while (true)
            {
                List <TableColumnDesc> list = dynamicObject.ColumnList.FindAll(obj => obj.Group_idx == group_idx);

                if (list.Count > 0)
                {
                    string group_text = String.Empty;

                    TableColumnDisplay display = dynamicObject.ColumnLanguageDisplayList.Find(obj => obj.Id == list[0].Id);
                    if (display != null)
                    {
                        group_text = display.Column_display_name;
                    }
                    LayoutControlGroup grp = this.CreateLayoutGroup(group_text);

                    #region 子Group
                    (int min, int max)tuple = (list.Min(obj => obj.Sub_group_idx), list.Min(obj => obj.Sub_group_idx));

                    if (tuple.min > 0)
                    {
                        for (int k = tuple.min; k <= tuple.max; k++)
                        {
                            List <TableColumnDesc> sub_list = list.FindAll(obj => obj.Sub_group_idx == k);

                            grp.Add(this.CreateLayoutGroup(sub_list, dynamicObject.ColumnLanguageDisplayList, dynamicObject.ColumnReferenceList, dynamicObject.ColumnRegularList));
                        }
                    }
                    #endregion

                    #region 单个Group
                    else
                    {
                        grp = this.CreateLayoutGroup(list, dynamicObject.ColumnLanguageDisplayList, dynamicObject.ColumnReferenceList, dynamicObject.ColumnRegularList);
                    }
                    #endregion

                    this.layoutEdit.AddGroup(grp);
                }
                else
                {
                    break;
                }

                group_idx++;
            }

            List <ClassRelated> sub_class = GlobeData.classRelatedList.FindAll(obj => obj.Main_class_id == dynamicObject.classDesc.Id);
            foreach (ClassRelated sub in sub_class)
            {
                ClassDesc subclass = GlobeData.classDescList.Find(obj => obj.Id == sub.Sub_class_id);

                LayoutControlGroup grp1 = this.CreateLayoutGroup(subclass.Class_name);
                LayoutControlItem  item = this.CreateGridListViewItem(subclass);
                grp1.AddItem(item);
                layoutEdit.AddGroup(grp1);
            }
        }
        public void Init()
        {
            _mockGetFrameworks = new Mock <IGetFrameworks>();
            _mockLogger        = new Mock <ILogger <FrameworksController> >();
            _mockUrlHelper     = new Mock <IUrlHelper>();
            _mockUrlHelper.Setup(x => x.Link("GetFrameworkById", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/frameworks/{o.id}"); });
            _mockUrlHelper.Setup(x => x.Link("GetByFrameworkCode", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/frameworks/codes/{o.frameworkCode}"); });

            _sut     = new FrameworksController(_mockGetFrameworks.Object, _mockLogger.Object);
            _sut.Url = _mockUrlHelper.Object;
        }
        public void Init()
        {
            _lastDateForNewStarts = DateTime.Today.AddDays(100);
            _mockGetStandards     = new Mock <IGetStandards>();
            _mockLogger           = new Mock <ILogger <StandardsController> >();
            _mockUrlHelper        = new Mock <IUrlHelper>();
            _mockUrlHelper.Setup(x => x.Link("GetStandardById", It.IsAny <object>())).Returns <string, dynamic>((a, b) => { var o = DynamicObjectHelper.ToExpandoObject(b); return($"http://localhost/standards/{o.id}"); });


            _sut     = new StandardsController(_mockGetStandards.Object, _mockLogger.Object);
            _sut.Url = _mockUrlHelper.Object;
        }