public void WritesExpectedCollectionIndexHiddenInput_WhenThereIsAnIndexInRequestData() { const string collectionName = "CollectionName"; var index0 = Guid.NewGuid(); var index1 = Guid.NewGuid(); var indexes = string.Format("{0},{1}", index0, index1); var httpContext = new Mock <HttpContext>(); var httpContextItems = new Dictionary <object, object> { { "__htmlPrefixScopeExtensions_IdsToReuse_CollectionName", "" } }; httpContext.SetupGet(p => p.Items).Returns(httpContextItems); var httpRequest = new Mock <HttpRequest>(); httpRequest.SetupGet(i => i.Form[It.Is <string>(s => s == string.Format("{0}.index", collectionName))]) .Returns(indexes); httpContext.SetupGet(p => p.Request).Returns(httpRequest.Object); var viewContext = new ViewContext { HttpContext = httpContext.Object, Writer = new StringWriter() }; _htmlHelper.SetupGet(x => x.ViewContext).Returns(viewContext); using (var result = HtmlPrefixScopeExtensions.BeginCollectionItem(_htmlHelper.Object, collectionName)) { Assert.NotNull(result); } var text = viewContext.Writer.ToString(); Assert.NotNull(text); Assert.NotEmpty(text); Assert.StartsWith(string.Format( @"<input type=""hidden"" name=""{0}.index"" autocomplete=""off"" value=""{1}"" />", collectionName, index0), text); }
public void WritesCollectionIndexHiddenInput_WhenThereIsNothingInRequestData() { const string collectionName = "CollectionName"; var index0 = Guid.NewGuid(); var index1 = Guid.NewGuid(); var indexes = string.Format("{0},{1}", index0, index1); var httpContext = new Mock <HttpContext>(); var httpContextItems = new Dictionary <object, object>(); httpContext.Setup(p => p.Items).Returns(httpContextItems); var httpRequest = new Mock <HttpRequest>(); httpContext.Setup(p => p.Request).Returns(httpRequest.Object); httpRequest.SetupGet(i => i.Form[It.Is <string>(s => s == string.Format("{0}.index", collectionName))]) .Returns(indexes); var viewContext = new ViewContext(); var writer = new StringWriter(); viewContext.Writer = writer; _htmlHelper.SetupGet(x => x.ViewContext).Returns(viewContext); _htmlHelper.SetupGet(x => x.ViewData).Returns(new ViewDataDictionary(new Mock <IModelMetadataProvider>().Object, new ModelStateDictionary())); viewContext.HttpContext = httpContext.Object; using (var result = HtmlPrefixScopeExtensions.BeginCollectionItem(_htmlHelper.Object, collectionName)) { Assert.NotNull(result); } var text = writer.ToString(); Assert.NotNull(text); Assert.NotEmpty(text); Assert.StartsWith(string.Format( @"<input type=""hidden"" name=""{0}.index"" autocomplete=""off"" value=""", collectionName), text); Assert.Contains(@""" />", text); }