Fixing specflow tests

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2013-07-05 16:47:33 -07:00
parent 8aae36cf60
commit 66a89c3102
17 changed files with 41 additions and 62 deletions

View File

@@ -112,5 +112,19 @@ namespace Orchard.Tests.Environment.Configuration {
Assert.That(settings.HashAlgorithm, Is.EqualTo("HMACSHA256")); Assert.That(settings.HashAlgorithm, Is.EqualTo("HMACSHA256"));
Assert.That(settings.HashKey, Is.EqualTo("HIJKLMN")); Assert.That(settings.HashKey, Is.EqualTo("HIJKLMN"));
} }
[Test]
public void SettingsDontLoseTenantState() {
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
var foo = new ShellSettings { Name = "Default" };
foo.State = TenantState.Disabled;
loader.SaveSettings(foo);
var settings = loader.LoadSettings().First();
Assert.That(settings.Name, Is.EqualTo("Default"));
Assert.That(settings.State, Is.EqualTo(TenantState.Disabled));
}
} }
} }

View File

@@ -255,7 +255,7 @@ namespace Orchard.Tests.Environment {
x.Name == y.Name && x.Name == y.Name &&
x.RequestUrlHost == y.RequestUrlHost && x.RequestUrlHost == y.RequestUrlHost &&
x.RequestUrlPrefix == y.RequestUrlPrefix && x.RequestUrlPrefix == y.RequestUrlPrefix &&
x.State.CurrentState == y.State.CurrentState x.State == y.State
); );
} }

View File

@@ -54,7 +54,7 @@ Scenario: Creating and using Date fields
And I am redirected And I am redirected
Then I should see "Your Event has been created." Then I should see "Your Event has been created."
When I go to "Admin/Contents/List" When I go to "Admin/Contents/List"
Then I should see "Date of the event:" Then I should see "Date of the event"
And I should see "1/31/2012 12:00" And I should see "1/31/2012 12:00"
# The hint should be displayed # The hint should be displayed

View File

@@ -3,7 +3,7 @@
// This code was generated by SpecFlow (http://www.specflow.org/). // This code was generated by SpecFlow (http://www.specflow.org/).
// SpecFlow Version:1.9.0.77 // SpecFlow Version:1.9.0.77
// SpecFlow Generator Version:1.9.0.0 // SpecFlow Generator Version:1.9.0.0
// Runtime Version:4.0.30319.18010 // Runtime Version:4.0.30319.18046
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@@ -176,7 +176,7 @@ this.ScenarioSetup(scenarioInfo);
#line 56 #line 56
testRunner.When("I go to \"Admin/Contents/List\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); testRunner.When("I go to \"Admin/Contents/List\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 57 #line 57
testRunner.Then("I should see \"Date of the event:\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); testRunner.Then("I should see \"Date of the event\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line 58 #line 58
testRunner.And("I should see \"1/31/2012 12:00\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); testRunner.And("I should see \"1/31/2012 12:00\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 61 #line 61

View File

@@ -3,7 +3,7 @@
// This code was generated by SpecFlow (http://www.specflow.org/). // This code was generated by SpecFlow (http://www.specflow.org/).
// SpecFlow Version:1.9.0.77 // SpecFlow Version:1.9.0.77
// SpecFlow Generator Version:1.9.0.0 // SpecFlow Generator Version:1.9.0.0
// Runtime Version:4.0.30319.17929 // Runtime Version:4.0.30319.18046
// //
// Changes to this file may cause incorrect behavior and will be lost if // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.

View File

@@ -3,6 +3,6 @@
OEmbedPart oEmbedPart = Model.ContentPart; OEmbedPart oEmbedPart = Model.ContentPart;
} }
<a href="@oEmbedPart["src"]" target="_blank" class="button"> <a href="@oEmbedPart.Source" target="_blank" class="button">
<span>@T("Preview")</span> <span>@T("Preview")</span>
</a> </a>

View File

@@ -47,7 +47,7 @@ namespace Orchard.MultiTenancy.Commands {
Name = tenantName, Name = tenantName,
RequestUrlHost = Host, RequestUrlHost = Host,
RequestUrlPrefix = UrlPrefix, RequestUrlPrefix = UrlPrefix,
State = new TenantState("Uninitialized") State = TenantState.Uninitialized
}); });
} }

View File

@@ -75,7 +75,7 @@ namespace Orchard.MultiTenancy.Controllers {
DataProvider = viewModel.DataProvider, DataProvider = viewModel.DataProvider,
DataConnectionString = viewModel.DatabaseConnectionString, DataConnectionString = viewModel.DatabaseConnectionString,
DataTablePrefix = viewModel.DatabaseTablePrefix, DataTablePrefix = viewModel.DatabaseTablePrefix,
State = new TenantState("Uninitialized"), State = TenantState.Uninitialized,
Themes = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray() Themes = viewModel.Themes.Where(x => x.Checked).Select(x => x.ThemeId).ToArray()
}); });
@@ -167,7 +167,7 @@ namespace Orchard.MultiTenancy.Controllers {
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name); var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant != null && tenant.Name != _thisShellSettings.Name) { if (tenant != null && tenant.Name != _thisShellSettings.Name) {
tenant.State.CurrentState = TenantState.State.Disabled; tenant.State = TenantState.Disabled;
_tenantService.UpdateTenant(tenant); _tenantService.UpdateTenant(tenant);
} }
@@ -185,7 +185,7 @@ namespace Orchard.MultiTenancy.Controllers {
var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name); var tenant = _tenantService.GetTenants().FirstOrDefault(ss => ss.Name == name);
if (tenant != null && tenant.Name != _thisShellSettings.Name) { if (tenant != null && tenant.Name != _thisShellSettings.Name) {
tenant.State.CurrentState = TenantState.State.Running; tenant.State = TenantState.Running;
_tenantService.UpdateTenant(tenant); _tenantService.UpdateTenant(tenant);
} }

View File

@@ -25,11 +25,8 @@ namespace Orchard.MultiTenancy.Services {
} }
public void UpdateTenant(ShellSettings settings) { public void UpdateTenant(ShellSettings settings) {
var tenant = GetTenants().FirstOrDefault(ss => ss.Name == settings.Name);
if ( tenant != null ) {
_shellSettingsManager.SaveSettings(settings); _shellSettingsManager.SaveSettings(settings);
} }
}
/// <summary> /// <summary>
/// Loads only installed themes /// Loads only installed themes

View File

@@ -22,7 +22,7 @@
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend>@T("Database Setup")</legend> <legend>@T("Database Setup")</legend>
@if (Model.State.CurrentState != TenantState.State.Uninitialized) { @if (Model.State != TenantState.Uninitialized) {
<div class="warning message">@T("Warning: If you don't know what you're doing you *will* (likely) send this tenant into a downward spiral of irrecoverable disrepair. Have a nice day.")</div> <div class="warning message">@T("Warning: If you don't know what you're doing you *will* (likely) send this tenant into a downward spiral of irrecoverable disrepair. Have a nice day.")</div>
} }
else { else {

View File

@@ -10,7 +10,7 @@
<div class="manage">@Html.ActionLink(T("Add a Tenant").ToString(), "Add", new {area = "Orchard.MultiTenancy"}, new { @class = "button primaryAction" })</div> <div class="manage">@Html.ActionLink(T("Add a Tenant").ToString(), "Add", new {area = "Orchard.MultiTenancy"}, new { @class = "button primaryAction" })</div>
<ul class="contentItems tenants"> <ul class="contentItems tenants">
@foreach (var tenant in Model.TenantSettings) { @foreach (var tenant in Model.TenantSettings) {
<li class="tenant @tenant.State.CurrentState"> <li class="tenant @tenant.State">
<div class="summary"> <div class="summary">
<div class="properties"> <div class="properties">
<h3>@tenant.Name @if (!string.IsNullOrEmpty(tenant.RequestUrlHost)) { <h3>@tenant.Name @if (!string.IsNullOrEmpty(tenant.RequestUrlHost)) {
@@ -26,7 +26,7 @@
<div class="related"> <div class="related">
@if (!string.Equals(tenant.Name, "default", StringComparison.OrdinalIgnoreCase)) { //todo: (heskew) base this off the view model so logic on what can be removed and have its state changed stays in the controller @if (!string.Equals(tenant.Name, "default", StringComparison.OrdinalIgnoreCase)) { //todo: (heskew) base this off the view model so logic on what can be removed and have its state changed stays in the controller
var t = tenant; var t = tenant;
@Html.DisplayFor(m => t, string.Format("ActionsFor{0}", tenant.State.CurrentState), "") @T(" | ") @Html.DisplayFor(m => t, string.Format("ActionsFor{0}", tenant.State.ToString()), "") @T(" | ")
} }
@Html.ActionLink(T("Edit").ToString(), "Edit", new {name = tenant.Name, area = "Orchard.MultiTenancy"}) @Html.ActionLink(T("Edit").ToString(), "Edit", new {name = tenant.Name, area = "Orchard.MultiTenancy"})
</div> </div>

View File

@@ -208,7 +208,7 @@ namespace Orchard.Commands {
} }
else { else {
// In case of an unitiliazed site (no default settings yet), we create a default settings instance. // In case of an unitiliazed site (no default settings yet), we create a default settings instance.
var settings = new ShellSettings { Name = ShellSettings.DefaultName, State = new TenantState("Uninitialized") }; var settings = new ShellSettings { Name = ShellSettings.DefaultName, State = TenantState.Uninitialized };
return host.CreateStandaloneEnvironment(settings); return host.CreateStandaloneEnvironment(settings);
} }
} }

View File

@@ -16,7 +16,7 @@ namespace Orchard.Environment.Configuration {
public ShellSettings() { public ShellSettings() {
_values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); _values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
State = new TenantState("Invalid"); State = TenantState.Invalid;
Themes = new string[0]; Themes = new string[0];
} }

View File

@@ -33,7 +33,8 @@ namespace Orchard.Environment.Configuration {
shellSettings.DataProvider = value; shellSettings.DataProvider = value;
break; break;
case "State": case "State":
shellSettings.State = new TenantState(value); TenantState state;
shellSettings.State = Enum.TryParse(value, true, out state) ? state : TenantState.Uninitialized;
break; break;
case "DataConnectionString": case "DataConnectionString":
shellSettings.DataConnectionString = value; shellSettings.DataConnectionString = value;

View File

@@ -1,41 +1,8 @@
namespace Orchard.Environment.Configuration { namespace Orchard.Environment.Configuration {
public class TenantState { public enum TenantState {
public TenantState(string state) {
switch (state) {
case "Uninitialized":
CurrentState = State.Uninitialized;
break;
case "Running":
CurrentState = State.Running;
break;
case "Disabled":
CurrentState = State.Disabled;
break;
default:
CurrentState = State.Invalid;
break;
}
}
public State CurrentState { get; set; }
public enum State {
Uninitialized, Uninitialized,
Running, Running,
Disabled, Disabled,
Invalid Invalid
} }
public override string ToString() {
switch (CurrentState) {
case State.Uninitialized:
return "Uninitialized";
case State.Running:
return "Running";
case State.Disabled:
return "Disabled";
}
return "Invalid";
}
}
} }

View File

@@ -165,7 +165,7 @@ namespace Orchard.Environment {
} }
ShellContext CreateShellContext(ShellSettings settings) { ShellContext CreateShellContext(ShellSettings settings) {
if (settings.State.CurrentState == TenantState.State.Uninitialized) { if (settings.State == TenantState.Uninitialized) {
Logger.Debug("Creating shell context for tenant {0} setup", settings.Name); Logger.Debug("Creating shell context for tenant {0} setup", settings.Name);
return _shellContextFactory.CreateSetupContext(settings); return _shellContextFactory.CreateSetupContext(settings);
} }
@@ -231,7 +231,7 @@ namespace Orchard.Environment {
lock (_syncLock) { lock (_syncLock) {
// if a tenant has been altered, and is not invalid, reload it // if a tenant has been altered, and is not invalid, reload it
if (settings.State.CurrentState != TenantState.State.Invalid) { if (settings.State != TenantState.Invalid) {
_tenantsToRestart = _tenantsToRestart.Where(x => x.Name != settings.Name).Union(new[] { settings }); _tenantsToRestart = _tenantsToRestart.Where(x => x.Name != settings.Name).Union(new[] { settings });
} }
} }
@@ -242,7 +242,7 @@ namespace Orchard.Environment {
var shellContext = _shellContexts.FirstOrDefault(c => c.Settings.Name == settings.Name); var shellContext = _shellContexts.FirstOrDefault(c => c.Settings.Name == settings.Name);
// is this is a new tenant ? or is it a tenant waiting for setup ? // is this is a new tenant ? or is it a tenant waiting for setup ?
if (shellContext == null || settings.State.CurrentState == TenantState.State.Uninitialized) { if (shellContext == null || settings.State == TenantState.Uninitialized) {
// create the Shell // create the Shell
var context = CreateShellContext(settings); var context = CreateShellContext(settings);

View File

@@ -100,7 +100,7 @@ namespace Orchard.Environment {
.SelectMany(group => group .SelectMany(group => group
.OrderByDescending(settings => (settings.RequestUrlPrefix ?? string.Empty).Length)) .OrderByDescending(settings => (settings.RequestUrlPrefix ?? string.Empty).Length))
.FirstOrDefault(settings => { .FirstOrDefault(settings => {
if (settings.State.CurrentState == TenantState.State.Disabled) { if (settings.State == TenantState.Disabled) {
return false; return false;
} }