Make page manager not use the page view model (separation of concerns)

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041950
This commit is contained in:
loudej
2009-11-23 21:19:23 +00:00
parent 4b9d0b6c57
commit b12767c8ce
7 changed files with 52 additions and 41 deletions

View File

@@ -39,7 +39,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
_pageScheduler = _container.Resolve<IPageScheduler>();
_templateProvider = _container.Resolve<ITemplateProvider>();
_authorizer = _container.Resolve<IAuthorizer>();
var page = _pageManager.CreatePage(new PageCreateViewModel { Slug = "slug", Templates = _templateProvider.List() });
var page = _pageManager.CreatePage(new CreatePageParams(null, "slug", null));
_slugPageId = page.Id;
_controller = _container.Resolve<AdminController>();
@@ -155,11 +155,11 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void IndexShouldReturnTheListOfFilteredPages() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
_pageManager.Publish(revision, new PublishOptions());
var createPage2 = new PageCreateViewModel { Title = "hello2", Slug = "world2", TemplateName = "twocolumn" };
var createPage2 = new CreatePageParams { Title = "hello2", Slug = "world2", TemplateName = "twocolumn" };
var revision2 = _pageManager.CreatePage(createPage2);
_pageScheduler.AddPublishTask(revision2, _clock.FutureMoment(TimeSpan.FromMinutes(1)));
@@ -212,7 +212,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void IndexPostShouldPerformBulkPublishNow() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
@@ -249,7 +249,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void IndexPostShouldPerformBulkPublishLater() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
@@ -293,7 +293,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void IndexPostShouldPerformBulkDelete() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
@@ -330,7 +330,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void IndexPostShouldPerformBulkUnpublish() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
_pageManager.Publish(revision, new PublishOptions());
@@ -394,7 +394,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void ChooseTemplateListsAvailableTemplatesWithCurrentOneSelected() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
var result = _controller.ChooseTemplate(revision.Id);
@@ -407,7 +407,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test]
public void PostingDifferentTemplateResultsInDraftAndExtendsNamedContentItems() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
_pageManager.Publish(revision, new PublishOptions());
@@ -436,7 +436,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
[Test, Ignore("This can't be properly implementated until a transaction scope with rollback abilities is available to the controller")]
public void PostingSameTemplateDoesNotResultInDraftBeingCreated() {
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
var revision = _pageManager.CreatePage(createPage);
_pageManager.Publish(revision, new PublishOptions());

View File

@@ -25,7 +25,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
_templateProvider = _container.Resolve<ITemplateProvider>();
_controller = _container.Resolve<TemplatesController>();
var revision = _pageManager.CreatePage(new PageCreateViewModel { Slug = "slug", Templates = _templateProvider.List() });
var revision = _pageManager.CreatePage(new CreatePageParams(null, "slug", null));
_pageManager.Publish(revision, new PublishOptions());
}

View File

@@ -65,8 +65,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
Assert.That(page.Contents, Has.Some.Property("ZoneName").EqualTo("content2"));
}
private PageCreateViewModel PageCreate(string slug, string title, string template) {
return new PageCreateViewModel { Slug = slug, Title = title, TemplateName = template, Templates = _templateProvider.List() };
private CreatePageParams PageCreate(string slug, string title, string template) {
return new CreatePageParams(title, slug, template);
//return new CreatePageParams { Slug = slug, Title = title, TemplateName = template, Templates = _templateProvider.List() };
}
[Test]
@@ -95,7 +96,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void GetPublishedBySlugShouldOnlyReturnPageAfterItIsPublished() {
var revision = _manager.CreatePage(new PageCreateViewModel { Slug = "hello-world", Templates = _templateProvider.List() });
var revision = _manager.CreatePage(new CreatePageParams { Slug = "hello-world" });
var notPublishedYet = _manager.GetPublishedBySlug("hello-world");
Assert.That(notPublishedYet, Is.Null);
@@ -109,7 +110,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
[Ignore("Linq to NHib doesn't support calling 'String.Equals' in expressions. Figure out a workaround.")]
public void GetPublishedBySlugShouldBeCaseInsensitive() {
var revision = _manager.CreatePage(new PageCreateViewModel { Slug = "hello-world", Templates = _templateProvider.List() });
var revision = _manager.CreatePage(new CreatePageParams { Slug = "hello-world" });
_manager.Publish(revision, new PublishOptions());
var publishedNow = _manager.GetPublishedBySlug("hello-WORLD");
@@ -118,9 +119,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishingPagesAddsToCurrentlyPublishedSlugList() {
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "one", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "two", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "three", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "one" }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "two" }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "three" }), new PublishOptions());
var slugs = _manager.GetCurrentlyPublishedSlugs();
Assert.That(slugs, Has.Count.GreaterThanOrEqualTo(3));
@@ -131,9 +132,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishingPagesDoesNotChangeSlugCasing() {
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "One", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "TWO", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "thRee", Templates = _templateProvider.List() }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "One" }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "TWO" }), new PublishOptions());
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "thRee" }), new PublishOptions());
var slugs = _manager.GetCurrentlyPublishedSlugs();
Assert.That(slugs, Has.Count.GreaterThanOrEqualTo(3));
@@ -144,7 +145,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishingThePublishedRevisionDoesNothing() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
_manager.Publish(initial, new PublishOptions());
DateTime initialRevisionTime = initial.PublishedDate.Value;
@@ -161,14 +162,14 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void AcquireDraftOnUnpublishedPageShouldReturnExistingRevision() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
var draft = _manager.AcquireDraft(initial.Page.Id);
Assert.That(initial, Is.SameAs(draft));
}
[Test]
public void AcquireDraftForUpdateOnPublishedPageShouldCreateNewRevision() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
_manager.Publish(initial, new PublishOptions());
var draft = _manager.AcquireDraft(initial.Page.Id);
Assert.That(initial, Is.Not.SameAs(draft));
@@ -177,7 +178,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishingDraftWithKeepHistoryFalseShouldDeletePreviousPublishedRevision() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
var pageId = initial.Page.Id;
_manager.Publish(initial, new PublishOptions());
@@ -196,7 +197,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishingDraftWithKeepHistoryTrueShouldLeavePreviousRevisionIntact() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
var pageId = initial.Page.Id;
Trace.WriteLine("Publish initial");
@@ -218,7 +219,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishDateIsSetWhenPublishOccurs() {
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
Assert.That(initial.PublishedDate, Is.Null);
_manager.Publish(initial, new PublishOptions());
Assert.That(initial.PublishedDate, Is.EqualTo(_clock.UtcNow));
@@ -228,7 +229,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
public void ModifiedDateIsSetWhenPageIsCreatedAndWhenAcquireDraftIsCalled() {
var mark1 = _clock.UtcNow;
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
Assert.That(initial.PublishedDate, Is.Null);
Assert.That(initial.ModifiedDate, Is.EqualTo(mark1));
@@ -267,7 +268,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
[Test]
public void PublishedPropertyShouldCascadeInsertsAndDeletesWhenSetAndNulled() {
var page = new Page {Published = new Published()};
var page = new Page { Published = new Published() };
page.Published.Page = page;
var pageRepos = _container.Resolve<IRepository<Page>>();

View File

@@ -5,7 +5,7 @@ using Orchard.CmsPages.ViewModels;
namespace Orchard.Tests.Packages.Pages.Services {
public static class TestExtensions {
public static PageRevision CreateAndPublishPage(this IPageManager manager, string slug, string title) {
var revision = manager.CreatePage(new PageCreateViewModel {Slug = slug, Title = title});
var revision = manager.CreatePage(new CreatePageParams(title, slug, null));
manager.Publish(revision, new PublishOptions());
return revision;
}

View File

@@ -204,7 +204,7 @@ namespace Orchard.CmsPages.Controllers {
Logger.Information("Creating CmsPage slug:{0} title{1}: template{2}",
viewModel.Slug, viewModel.Title, viewModel.TemplateName);
var revision = _pageManager.CreatePage(viewModel);
var revision = _pageManager.CreatePage(new CreatePageParams(viewModel.Title, viewModel.Slug, viewModel.TemplateName));
return RedirectToAction("Edit", new { revision.Page.Id });
}
catch (Exception ex) {

View File

@@ -22,13 +22,26 @@ namespace Orchard.CmsPages.Services {
public PublishHistory History { get; set; }
}
public class CreatePageParams {
public CreatePageParams(){}
public CreatePageParams(string title, string slug, string templateName) {
Title = title;
Slug = slug;
TemplateName = templateName;
}
public string Title { get; set; }
public string Slug { get; set; }
public string TemplateName { get; set; }
}
public interface IPageManager : IDependency {
IEnumerable<string> GetCurrentlyPublishedSlugs();
PageRevision GetPublishedBySlug(string slug);
PageRevision GetLastRevision(int pageId);
PageRevision CreatePage(PageCreateViewModel pageCreate);
PageRevision CreatePage(CreatePageParams createPageParams);
PageRevision AcquireDraft(int pageId);
void ApplyTemplateName(PageRevision revision, string templateName);
void Publish(PageRevision revision, [NotNull] PublishOptions options);
@@ -60,7 +73,8 @@ namespace Orchard.CmsPages.Services {
public ILogger Logger { get; set; }
public PageRevision CreatePage(PageCreateViewModel pageCreate) {
public PageRevision CreatePage(CreatePageParams createPageParams) {
Logger.Information("CreatePage");
//var templateDescriptor = _templateProvider.Get(pageCreate.TemplateName);
@@ -68,9 +82,8 @@ namespace Orchard.CmsPages.Services {
var page = new Page();
var revision = new PageRevision {
Page = page,
Title = pageCreate.Title,
Slug = pageCreate.Slug,
TemplateName = pageCreate.TemplateName,
Title = createPageParams.Title,
Slug = createPageParams.Slug,
ModifiedDate = _clock.UtcNow,
Number = 1
};
@@ -81,7 +94,7 @@ namespace Orchard.CmsPages.Services {
// revision.Contents.Add(new ContentItem { PageRevision = revision, ZoneName = zone });
// }
//}
ApplyTemplateName(revision, pageCreate.TemplateName);
ApplyTemplateName(revision, createPageParams.TemplateName);
_pageRepository.Create(page);

View File

@@ -75,10 +75,7 @@ namespace Orchard.CmsPages.Services {
var title = content.Optional<string>("title");
var description = content.Optional<string>("description");
var pageRevision = _pageManager.CreatePage(new PageCreateViewModel {
Title = title,
TemplateName = "TwoColumns"
});
var pageRevision = _pageManager.CreatePage(new CreatePageParams(title, null, "TwoColumns"));
pageRevision.Contents.First().Content = description;
if (publish) {