mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Changes to tests for MVC 2 value provider changes
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4044578
This commit is contained in:
@@ -99,6 +99,7 @@
|
|||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Roles\Controllers\AdminControllerTests.cs" />
|
<Compile Include="Roles\Controllers\AdminControllerTests.cs" />
|
||||||
<Compile Include="Roles\Services\RoleServiceTests.cs" />
|
<Compile Include="Roles\Services\RoleServiceTests.cs" />
|
||||||
|
<Compile Include="Values.cs" />
|
||||||
<Compile Include="Users\Controllers\AdminControllerTests.cs" />
|
<Compile Include="Users\Controllers\AdminControllerTests.cs" />
|
||||||
<Compile Include="Users\Services\MembershipServiceTests.cs" />
|
<Compile Include="Users\Services\MembershipServiceTests.cs" />
|
||||||
<Compile Include="XmlRpc\Controllers\HomeControllerTests.cs" />
|
<Compile Include="XmlRpc\Controllers\HomeControllerTests.cs" />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
@@ -83,7 +84,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class StubAuthorizer: IAuthorizer {
|
class StubAuthorizer : IAuthorizer {
|
||||||
#region IAuthorizer Members
|
#region IAuthorizer Members
|
||||||
|
|
||||||
public bool Authorize(Permission permission, LocalizedString message) {
|
public bool Authorize(Permission permission, LocalizedString message) {
|
||||||
@@ -103,8 +104,11 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CreateShouldReturnViewWithErrorIfSlugIsNull() {
|
public void CreateShouldReturnViewWithErrorIfSlugIsNull() {
|
||||||
var input = new FormCollection { { ReflectOn<PageCreateViewModel>.NameOf(m => m.Slug), null } };
|
_controller.ValueProvider = Values.From(new PageCreateViewModel {
|
||||||
var result = _controller.Create(input);
|
Slug = null
|
||||||
|
});
|
||||||
|
|
||||||
|
var result = _controller.CreatePOST();
|
||||||
Assert.That(result, Is.TypeOf<ViewResult>());
|
Assert.That(result, Is.TypeOf<ViewResult>());
|
||||||
Assert.That(_controller.ModelState.IsValid, Is.False);
|
Assert.That(_controller.ModelState.IsValid, Is.False);
|
||||||
}
|
}
|
||||||
@@ -130,12 +134,12 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
|
|
||||||
var pageDoesntExist = _pageManager.GetPublishedBySlug("slug2");
|
var pageDoesntExist = _pageManager.GetPublishedBySlug("slug2");
|
||||||
|
|
||||||
var input = new FormCollection {
|
_controller.ValueProvider = Values.From(new PageCreateViewModel {
|
||||||
{ ReflectOn<PageCreateViewModel>.NameOf(m => m.Slug), "slug2" },
|
Title = "title2",
|
||||||
{ ReflectOn<PageCreateViewModel>.NameOf(m => m.TemplateName), "threecolumn" }
|
Slug = "slug2",
|
||||||
};
|
TemplateName = "threecolumn",
|
||||||
|
});
|
||||||
var result = _controller.Create(input);
|
var result = _controller.CreatePOST();
|
||||||
|
|
||||||
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
||||||
var redirect = (RedirectToRouteResult)result;
|
var redirect = (RedirectToRouteResult)result;
|
||||||
@@ -227,15 +231,21 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
||||||
|
|
||||||
// Build controller input
|
// Build controller input
|
||||||
var input = new FormCollection { { ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkAction), PageIndexBulkAction.PublishNow.ToString() } };
|
|
||||||
|
var options = new PageIndexOptions {
|
||||||
|
BulkAction = PageIndexBulkAction.PublishNow
|
||||||
|
};
|
||||||
|
|
||||||
|
var pageEntries = new List<PageEntry>();
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
//TODO: Use "NameOf" when it supports these expressions
|
pageEntries.Add(new PageEntry {
|
||||||
input.Add(string.Format("PageEntries[{0}].PageId", i), pages[i].Id.ToString());
|
PageId = pages[i].Id,
|
||||||
input.Add(string.Format("PageEntries[{0}].IsChecked", i), true.ToString());
|
IsChecked = true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call controller
|
// call controller
|
||||||
var result = _controller.Index(input);
|
var result = _controller.IndexPOST(options, pageEntries);
|
||||||
|
|
||||||
// Verify result, check database state
|
// Verify result, check database state
|
||||||
ClearSession();
|
ClearSession();
|
||||||
@@ -263,21 +273,25 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(pages[1].Published, Is.Null);
|
Assert.That(pages[1].Published, Is.Null);
|
||||||
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
||||||
|
|
||||||
// Build controller input
|
|
||||||
DateTime scheduledDate = _clock.FutureMoment(TimeSpan.FromMinutes(1));
|
|
||||||
|
|
||||||
var input = new FormCollection {
|
// Build controller input
|
||||||
{ ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkAction), PageIndexBulkAction.PublishLater.ToString() } ,
|
|
||||||
{ ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkPublishLaterDate), string.Format("{0:d} {0:T}", scheduledDate) }
|
DateTime scheduledDate = _clock.FutureMoment(TimeSpan.FromMinutes(1));
|
||||||
};
|
var options = new PageIndexOptions {
|
||||||
|
BulkAction = PageIndexBulkAction.PublishLater,
|
||||||
|
BulkPublishLaterDate = scheduledDate,
|
||||||
|
};
|
||||||
|
|
||||||
|
var pageEntries = new List<PageEntry>();
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
//TODO: Use "NameOf" when it supports these expressions
|
pageEntries.Add(new PageEntry {
|
||||||
input.Add(string.Format("PageEntries[{0}].PageId", i), pages[i].Id.ToString());
|
PageId = pages[i].Id,
|
||||||
input.Add(string.Format("PageEntries[{0}].IsChecked", i), true.ToString());
|
IsChecked = true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call controller
|
// call controller
|
||||||
var result = _controller.Index(input);
|
var result = _controller.IndexPOST(options, pageEntries);
|
||||||
|
|
||||||
// Verify result, check database state
|
// Verify result, check database state
|
||||||
ClearSession();
|
ClearSession();
|
||||||
@@ -307,20 +321,24 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(pages[1].Published, Is.Null);
|
Assert.That(pages[1].Published, Is.Null);
|
||||||
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
Assert.That(_pagesRepository.Get(revision.Page.Id).Scheduled.Count, Is.EqualTo(1));
|
||||||
|
|
||||||
// Build controller input
|
|
||||||
var input = new FormCollection {
|
|
||||||
{ ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkAction), PageIndexBulkAction.Delete.ToString() },
|
|
||||||
{ ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkDeleteConfirmed), true.ToString() }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
// Build controller input
|
||||||
|
|
||||||
|
var options = new PageIndexOptions {
|
||||||
|
BulkAction = PageIndexBulkAction.Delete,
|
||||||
|
BulkDeleteConfirmed = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
var pageEntries = new List<PageEntry>();
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
//TODO: Use "NameOf" when it supports these expressions
|
pageEntries.Add(new PageEntry {
|
||||||
input.Add(string.Format("PageEntries[{0}].PageId", i), pages[i].Id.ToString());
|
PageId = pages[i].Id,
|
||||||
input.Add(string.Format("PageEntries[{0}].IsChecked", i), true.ToString());
|
IsChecked = true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call controller
|
// call controller
|
||||||
var result = _controller.Index(input);
|
var result = _controller.IndexPOST(options, pageEntries);
|
||||||
|
|
||||||
// Verify result, check database state
|
// Verify result, check database state
|
||||||
ClearSession();
|
ClearSession();
|
||||||
@@ -342,18 +360,20 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(pages[1].Published, Is.Not.Null);
|
Assert.That(pages[1].Published, Is.Not.Null);
|
||||||
|
|
||||||
// Build controller input
|
// Build controller input
|
||||||
var input = new FormCollection {
|
var options = new PageIndexOptions {
|
||||||
{ ReflectOn<PageIndexViewModel>.NameOf(m => m.Options.BulkAction), PageIndexBulkAction.Unpublish.ToString() },
|
BulkAction = PageIndexBulkAction.Unpublish,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var pageEntries = new List<PageEntry>();
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
//TODO: Use "NameOf" when it supports these expressions
|
pageEntries.Add(new PageEntry {
|
||||||
input.Add(string.Format("PageEntries[{0}].PageId", i), pages[i].Id.ToString());
|
PageId = pages[i].Id,
|
||||||
input.Add(string.Format("PageEntries[{0}].IsChecked", i), true.ToString());
|
IsChecked = true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call controller
|
// call controller
|
||||||
var result = _controller.Index(input);
|
var result = _controller.IndexPOST(options, pageEntries);
|
||||||
|
|
||||||
// Verify result, check database state
|
// Verify result, check database state
|
||||||
ClearSession();
|
ClearSession();
|
||||||
@@ -374,11 +394,11 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
public void PublishNowShouldApplyChangesAndRedirect() {
|
public void PublishNowShouldApplyChangesAndRedirect() {
|
||||||
var pageBeforeEdit = _pageManager.GetLastRevision(_slugPageId);
|
var pageBeforeEdit = _pageManager.GetLastRevision(_slugPageId);
|
||||||
|
|
||||||
var input = new FormCollection {
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
{ ReflectOn<PageEditViewModel>.NameOf(m => m.Revision.Slug), "new-slug-value" },
|
{"Revision.Slug","new-slug-value" },
|
||||||
{ ReflectOn<PageEditViewModel>.NameOf(m => m.Command), PageEditCommand.PublishNow.ToString() }
|
{"Command","PublishNow"},
|
||||||
};
|
});
|
||||||
var result = _controller.Edit(_slugPageId, input);
|
var result = _controller.EditPOST(_slugPageId);
|
||||||
|
|
||||||
var pageNotFoundAnymore = _pageManager.GetPublishedBySlug("slug");
|
var pageNotFoundAnymore = _pageManager.GetPublishedBySlug("slug");
|
||||||
var pageFromNewSlug = _pageManager.GetPublishedBySlug("new-slug-value");
|
var pageFromNewSlug = _pageManager.GetPublishedBySlug("new-slug-value");
|
||||||
@@ -414,8 +434,10 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(revision.Contents, Has.Count.EqualTo(2));
|
Assert.That(revision.Contents, Has.Count.EqualTo(2));
|
||||||
Assert.That(revision.Contents, Has.None.Property("ZoneName").EqualTo("content3"));
|
Assert.That(revision.Contents, Has.None.Property("ZoneName").EqualTo("content3"));
|
||||||
|
|
||||||
var input = new FormCollection { { "TemplateName", "threecolumn" } };
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
var result = _controller.ChooseTemplate(revision.Id, input);
|
{ "TemplateName", "threecolumn" }
|
||||||
|
});
|
||||||
|
var result = _controller.ChooseTemplatePOST(revision.Id);
|
||||||
|
|
||||||
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
||||||
|
|
||||||
@@ -443,8 +465,10 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
Assert.That(revision.Contents, Has.Count.EqualTo(2));
|
Assert.That(revision.Contents, Has.Count.EqualTo(2));
|
||||||
Assert.That(revision.Contents, Has.None.Property("ZoneName").EqualTo("content3"));
|
Assert.That(revision.Contents, Has.None.Property("ZoneName").EqualTo("content3"));
|
||||||
|
|
||||||
var input = new FormCollection { { "TemplateName", "twocolumn" } };
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
var result = _controller.ChooseTemplate(revision.Id, input);
|
{ "TemplateName", "twocolumn" }
|
||||||
|
});
|
||||||
|
var result = _controller.ChooseTemplatePOST(revision.Id);
|
||||||
|
|
||||||
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
Assert.That(result, Is.TypeOf<RedirectToRouteResult>());
|
||||||
|
|
||||||
@@ -460,41 +484,41 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
|||||||
|
|
||||||
[Test, Ignore("This actually requires the data binder to be registered, because it's going through contoller's update model method.")]
|
[Test, Ignore("This actually requires the data binder to be registered, because it's going through contoller's update model method.")]
|
||||||
public void SavingDraftAfterEmptyingUnusedContentItemShouldRemoveUnusedItems() {
|
public void SavingDraftAfterEmptyingUnusedContentItemShouldRemoveUnusedItems() {
|
||||||
var createInput = new FormCollection {
|
_controller.ValueProvider = Values.From(new PageCreateViewModel {
|
||||||
{"Title", "One"},
|
Title = "One",
|
||||||
{"Slug", "Two"},
|
Slug = "Two",
|
||||||
{"TemplateName", "threecolumn"},
|
TemplateName = "threecolumn",
|
||||||
};
|
});
|
||||||
var createResult = (RedirectToRouteResult)_controller.Create(createInput);
|
var createResult = (RedirectToRouteResult)_controller.CreatePOST();
|
||||||
ClearSession();
|
ClearSession();
|
||||||
var pageId = (int)createResult.RouteValues["id"];
|
var pageId = (int)createResult.RouteValues["id"];
|
||||||
|
|
||||||
var publishInput = new FormCollection {
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
{"Command", "PublishNow"},
|
{"Command", "PublishNow"},
|
||||||
{"Revision.Contents[content1].Content", "alpha"},
|
{"Revision.Contents[content1].Content", "alpha"},
|
||||||
{"Revision.Contents[content2].Content", "beta"},
|
{"Revision.Contents[content2].Content", "beta"},
|
||||||
{"Revision.Contents[content3].Content", "gamma"},
|
{"Revision.Contents[content3].Content", "gamma"},
|
||||||
};
|
});
|
||||||
_controller.Edit(pageId, publishInput);
|
_controller.EditPOST(pageId);
|
||||||
ClearSession();
|
ClearSession();
|
||||||
|
|
||||||
var chooseTemplateInput = new FormCollection {
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
{"TemplateName", "twocolumn"},
|
{"TemplateName", "twocolumn"},
|
||||||
};
|
});
|
||||||
_controller.ChooseTemplate(pageId, chooseTemplateInput);
|
_controller.ChooseTemplatePOST(pageId);
|
||||||
ClearSession();
|
ClearSession();
|
||||||
|
|
||||||
var revision = _pageManager.GetLastRevision(pageId);
|
var revision = _pageManager.GetLastRevision(pageId);
|
||||||
Assert.That(revision.Contents, Has.Count.EqualTo(3));
|
Assert.That(revision.Contents, Has.Count.EqualTo(3));
|
||||||
|
|
||||||
|
|
||||||
var publishInput2 = new FormCollection {
|
_controller.ValueProvider = Values.From(new Dictionary<string, string> {
|
||||||
{"Command", "PublishNow"},
|
{"Command", "PublishNow"},
|
||||||
{"Revision.Contents[content1].Content", "alpha"},
|
{"Revision.Contents[content1].Content", "alpha"},
|
||||||
{"Revision.Contents[content2].Content", "beta"},
|
{"Revision.Contents[content2].Content", "beta"},
|
||||||
{"Revision.Contents[content3].Content", ""},
|
{"Revision.Contents[content3].Content", ""},
|
||||||
};
|
});
|
||||||
_controller.Edit(pageId, publishInput2);
|
_controller.EditPOST(pageId);
|
||||||
ClearSession();
|
ClearSession();
|
||||||
var revision2 = _pageManager.GetLastRevision(pageId);
|
var revision2 = _pageManager.GetLastRevision(pageId);
|
||||||
Assert.That(revision2.Contents, Has.Count.EqualTo(2));
|
Assert.That(revision2.Contents, Has.Count.EqualTo(2));
|
||||||
|
|||||||
@@ -80,37 +80,11 @@ namespace Orchard.Tests.Packages.Users.Controllers {
|
|||||||
Assert.That(model.Rows, Is.Not.Null);
|
Assert.That(model.Rows, Is.Not.Null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Values {
|
|
||||||
public static IValueProvider Of<T>(T obj) {
|
|
||||||
return new ValueProvider<T>(obj);
|
|
||||||
}
|
|
||||||
class ValueProvider<T> : IValueProvider {
|
|
||||||
private readonly T _obj;
|
|
||||||
|
|
||||||
public ValueProvider(T obj) {
|
|
||||||
_obj = obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ContainsPrefix( string prefix) {
|
|
||||||
return typeof(T).GetProperties().Any(x => x.Name.StartsWith(prefix));
|
|
||||||
}
|
|
||||||
|
|
||||||
public ValueProviderResult GetValue( string key) {
|
|
||||||
var property = typeof(T).GetProperty(key);
|
|
||||||
if (property == null)
|
|
||||||
return null;
|
|
||||||
return new ValueProviderResult(
|
|
||||||
property.GetValue(_obj, null),
|
|
||||||
Convert.ToString(property.GetValue(_obj, null)),
|
|
||||||
null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CreateShouldAddUserAndRedirect() {
|
public void CreateShouldAddUserAndRedirect() {
|
||||||
var controller = _container.Resolve<AdminController>();
|
var controller = _container.Resolve<AdminController>();
|
||||||
controller.ValueProvider = Values.Of(new {
|
controller.ValueProvider = Values.From(new {
|
||||||
UserName = "four",
|
UserName = "four",
|
||||||
Password = "five",
|
Password = "five",
|
||||||
ConfirmPassword = "five"
|
ConfirmPassword = "five"
|
||||||
@@ -134,7 +108,7 @@ namespace Orchard.Tests.Packages.Users.Controllers {
|
|||||||
Assert.That(model.UserName, Is.EqualTo("two"));
|
Assert.That(model.UserName, Is.EqualTo("two"));
|
||||||
|
|
||||||
var controller = _container.Resolve<AdminController>();
|
var controller = _container.Resolve<AdminController>();
|
||||||
controller.ValueProvider = Values.Of(new {
|
controller.ValueProvider = Values.From(new {
|
||||||
UserName = "bubba",
|
UserName = "bubba",
|
||||||
Email = "hotep",
|
Email = "hotep",
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Web.Mvc;
|
||||||
|
|
||||||
|
namespace Orchard.Tests.Packages {
|
||||||
|
public static class Values {
|
||||||
|
public static IValueProvider From<T>(T obj) {
|
||||||
|
if (obj is IDictionary<string,string>) {
|
||||||
|
return new DictionaryValueProvider<string>(
|
||||||
|
(IDictionary<string,string>)obj,
|
||||||
|
CultureInfo.InvariantCulture);
|
||||||
|
}
|
||||||
|
return new ValueProvider<T>(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
class ValueProvider<T> : IValueProvider {
|
||||||
|
private readonly T _obj;
|
||||||
|
|
||||||
|
public ValueProvider(T obj) {
|
||||||
|
_obj = obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ContainsPrefix(string prefix) {
|
||||||
|
return typeof(T).GetProperties().Any(x => x.Name.StartsWith(prefix));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ValueProviderResult GetValue(string key) {
|
||||||
|
var property = typeof(T).GetProperty(key);
|
||||||
|
if (property == null)
|
||||||
|
return null;
|
||||||
|
return new ValueProviderResult(
|
||||||
|
property.GetValue(_obj, null),
|
||||||
|
Convert.ToString(property.GetValue(_obj, null)),
|
||||||
|
null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -172,26 +172,5 @@ namespace Orchard.Tests.Models {
|
|||||||
return modelRecord;
|
return modelRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void EditorsShouldBeOrderedByPositionAndDefaultPositionIsSix() {
|
|
||||||
var alpha = _manager.New("alpha");
|
|
||||||
var templates = _manager.BuildDisplayModel(alpha, null).Displays;
|
|
||||||
Assert.That(templates.Count(), Is.EqualTo(3));
|
|
||||||
|
|
||||||
var t0 = templates.First();
|
|
||||||
var t1 = templates.Skip(1).First();
|
|
||||||
var t2 = templates.Skip(2).First();
|
|
||||||
|
|
||||||
Assert.That(t0.Model, Is.TypeOf<Alpha>());
|
|
||||||
Assert.That(t1.Model, Is.TypeOf<Flavored>());
|
|
||||||
Assert.That(t2.Model, Is.TypeOf<Styled>());
|
|
||||||
|
|
||||||
Assert.That(t0.Position, Is.EqualTo("3"));
|
|
||||||
Assert.That(t1.Position, Is.Null);
|
|
||||||
Assert.That(t2.Position, Is.EqualTo("10"));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,11 +65,11 @@ namespace Orchard.Tests.UI.Notify {
|
|||||||
var model = new AdminViewModel();
|
var model = new AdminViewModel();
|
||||||
|
|
||||||
var context = BuildContext();
|
var context = BuildContext();
|
||||||
context.Controller.TempData.Add("messages", "dont-destroy" + System.Environment.NewLine);
|
context.Controller.TempData.Add("messages", "dont-destroy" + System.Environment.NewLine + "-" + System.Environment.NewLine);
|
||||||
context.Result = new ViewResult {
|
context.Result = new ViewResult {
|
||||||
ViewData = new ViewDataDictionary<AdminViewModel>(model),
|
ViewData = new ViewDataDictionary<AdminViewModel>(model),
|
||||||
TempData = context.Controller.TempData
|
TempData = context.Controller.TempData
|
||||||
};
|
};
|
||||||
|
|
||||||
filter.OnActionExecuted(context);
|
filter.OnActionExecuted(context);
|
||||||
filter.OnResultExecuting(new ResultExecutingContext(context, context.Result));
|
filter.OnResultExecuting(new ResultExecutingContext(context, context.Result));
|
||||||
|
|||||||
@@ -82,15 +82,15 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost, ActionName("Index")]
|
||||||
[FormValueRequired("submit.BulkEdit")]
|
[FormValueRequired("submit.BulkEdit")]
|
||||||
public ActionResult Index(FormCollection input) {
|
public ActionResult IndexPOST(PageIndexOptions options, IList<PageEntry> pageEntries) {
|
||||||
var viewModel = new PageIndexViewModel();
|
//var viewModel = new PageIndexViewModel();
|
||||||
UpdateModel(viewModel, input.ToValueProvider());
|
//UpdateModel(viewModel);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
IEnumerable<PageEntry> checkedEntries = viewModel.PageEntries.Where(p => p.IsChecked);
|
IEnumerable<PageEntry> checkedEntries = pageEntries.Where(p => p.IsChecked);
|
||||||
switch (viewModel.Options.BulkAction) {
|
switch (options.BulkAction) {
|
||||||
case PageIndexBulkAction.None:
|
case PageIndexBulkAction.None:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -111,17 +111,20 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
if (!_authorizer.Authorize(Permissions.SchedulePages, T("Couldn't publish page")))
|
if (!_authorizer.Authorize(Permissions.SchedulePages, T("Couldn't publish page")))
|
||||||
return new HttpUnauthorizedResult();
|
return new HttpUnauthorizedResult();
|
||||||
|
|
||||||
if (viewModel.Options.BulkPublishLaterDate != null) {
|
if (options.BulkPublishLaterDate != null) {
|
||||||
//TODO: Transaction
|
//TODO: Transaction
|
||||||
foreach (PageEntry entry in checkedEntries) {
|
foreach (PageEntry entry in checkedEntries) {
|
||||||
var page = _repository.Get(entry.PageId);
|
var page = _repository.Get(entry.PageId);
|
||||||
var revision = _pageManager.AcquireDraft(page.Id);
|
var revision = _pageManager.AcquireDraft(page.Id);
|
||||||
_pageScheduler.ClearTasks(page);
|
_pageScheduler.ClearTasks(page);
|
||||||
_pageScheduler.AddPublishTask(revision, viewModel.Options.BulkPublishLaterDate.Value);
|
_pageScheduler.AddPublishTask(revision, options.BulkPublishLaterDate.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return View("BulkPublishLater", viewModel);
|
return View("BulkPublishLater", new PageIndexViewModel {
|
||||||
|
Options = options,
|
||||||
|
PageEntries = pageEntries
|
||||||
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -139,7 +142,7 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
if (!_authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page")))
|
if (!_authorizer.Authorize(Permissions.DeletePages, T("Couldn't delete page")))
|
||||||
return new HttpUnauthorizedResult();
|
return new HttpUnauthorizedResult();
|
||||||
|
|
||||||
if (viewModel.Options.BulkDeleteConfirmed) {
|
if (options.BulkDeleteConfirmed) {
|
||||||
//TODO: Transaction
|
//TODO: Transaction
|
||||||
foreach (PageEntry entry in checkedEntries) {
|
foreach (PageEntry entry in checkedEntries) {
|
||||||
var page = _repository.Get(entry.PageId);
|
var page = _repository.Get(entry.PageId);
|
||||||
@@ -148,7 +151,10 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return View("BulkDeleteConfirm", viewModel);
|
return View("BulkDeleteConfirm", new PageIndexViewModel {
|
||||||
|
Options = options,
|
||||||
|
PageEntries = pageEntries
|
||||||
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -159,7 +165,7 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
ModelState.AddModelError("", ex);
|
ModelState.AddModelError("", ex);
|
||||||
//TODO: Is this a good idea to return to the index view in case of error?
|
//TODO: Is this a good idea to return to the index view in case of error?
|
||||||
return Index(viewModel.Options);
|
return Index(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
return RedirectToAction("Index");
|
return RedirectToAction("Index");
|
||||||
@@ -191,12 +197,12 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[AcceptVerbs(HttpVerbs.Post)]
|
[AcceptVerbs(HttpVerbs.Post), ActionName("Create")]
|
||||||
public ActionResult Create(FormCollection input) {
|
public ActionResult CreatePOST() {
|
||||||
|
|
||||||
var viewModel = new PageCreateViewModel { Templates = _templateProvider.List() };
|
var viewModel = new PageCreateViewModel { Templates = _templateProvider.List() };
|
||||||
try {
|
try {
|
||||||
UpdateModel(viewModel, input.ToValueProvider());
|
UpdateModel(viewModel);
|
||||||
if (!_authorizer.Authorize(Permissions.CreatePages, T("Couldn't create page")))
|
if (!_authorizer.Authorize(Permissions.CreatePages, T("Couldn't create page")))
|
||||||
return new HttpUnauthorizedResult();
|
return new HttpUnauthorizedResult();
|
||||||
|
|
||||||
@@ -235,9 +241,9 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost, ActionName("Edit")]
|
||||||
[FormValueRequired("submit.Save")]
|
[FormValueRequired("submit.Save")]
|
||||||
public ActionResult Edit(int id, FormCollection input) {
|
public ActionResult EditPOST(int id) {
|
||||||
var model = new PageEditViewModel();
|
var model = new PageEditViewModel();
|
||||||
try {
|
try {
|
||||||
//TODO: need a transaction to surround this entire lot, really
|
//TODO: need a transaction to surround this entire lot, really
|
||||||
@@ -245,7 +251,7 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
model.Revision = _pageManager.AcquireDraft(id);
|
model.Revision = _pageManager.AcquireDraft(id);
|
||||||
model.Template = _templateProvider.Get(model.Revision.TemplateName);
|
model.Template = _templateProvider.Get(model.Revision.TemplateName);
|
||||||
|
|
||||||
UpdateModel(model, input.ToValueProvider());
|
UpdateModel(model);
|
||||||
RemoveUnusedContentItems(model.Revision, model.Template);
|
RemoveUnusedContentItems(model.Revision, model.Template);
|
||||||
|
|
||||||
_pageScheduler.ClearTasks(model.Revision.Page);
|
_pageScheduler.ClearTasks(model.Revision.Page);
|
||||||
@@ -342,11 +348,11 @@ namespace Orchard.CmsPages.Controllers {
|
|||||||
return View(viewModel);
|
return View(viewModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
[AcceptVerbs(HttpVerbs.Post)]
|
[HttpPost, ActionName("ChooseTemplate")]
|
||||||
public ActionResult ChooseTemplate(int id, FormCollection input) {
|
public ActionResult ChooseTemplatePOST(int id) {
|
||||||
var viewModel = new ChooseTemplateViewModel();
|
var viewModel = new ChooseTemplateViewModel();
|
||||||
try {
|
try {
|
||||||
UpdateModel(viewModel, input.ToValueProvider());
|
UpdateModel(viewModel);
|
||||||
|
|
||||||
//todo: needs transaction
|
//todo: needs transaction
|
||||||
var draft = _pageManager.AcquireDraft(id);
|
var draft = _pageManager.AcquireDraft(id);
|
||||||
|
|||||||
@@ -16,19 +16,16 @@ namespace Orchard.ContentManagement.Drivers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override void Apply(BuildDisplayModelContext context) {
|
public override void Apply(BuildDisplayModelContext context) {
|
||||||
context.AddDisplay(new TemplateViewModel(Model, Prefix) {
|
context.DisplayModel.Zones.AddDisplayPart(
|
||||||
TemplateName = TemplateName,
|
Zone + ":" + Position, Model, TemplateName, Prefix);
|
||||||
ZoneName = Zone,
|
|
||||||
Position = Position
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Apply(BuildEditorModelContext context) {
|
public override void Apply(BuildEditorModelContext context) {
|
||||||
context.AddEditor(new TemplateViewModel(Model, Prefix) {
|
context.AddEditor(new TemplateViewModel(Model, Prefix) {
|
||||||
TemplateName = TemplateName,
|
TemplateName = TemplateName,
|
||||||
ZoneName = Zone,
|
ZoneName = Zone,
|
||||||
Position = Position
|
Position = Position
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public PartTemplateResult Location(string zone) {
|
public PartTemplateResult Location(string zone) {
|
||||||
|
|||||||
Reference in New Issue
Block a user