I am feeling good today and I invite you to read below and smile along with me.
[su_note note_color=”#fafafa”]All tests pass as written on Sitecore 7.1 Update 1. Isolation provided by Sitecore.FakeDb[/su_note]
The Stage
public class LanguageQuirksTest
{
private const string LanguageWithNoName = @"";
private class SmartDataProvider : DataProvider
{
// can't create an abstract DataProvider
}
}
There Is A Language With No Name
[Test]
public void ThereIsALanguageWithNoName()
{
LanguageManager.IsValidLanguageName(LanguageWithNoName)
.Should()
.BeTrue("Of course there's a language with no name");
}
A Language With No Name Has No Name
[Test]
public void ALanguageWithNoNameHasNoName()
{
var language = Language.Parse(LanguageWithNoName);
language.Should().NotBeNull("Sitecore knows there's a language with no name");
language.Name.Should().BeEmpty("A language with no name has no name. Of course!");
}
Is There Really A Language With No Name?
[Test]
public void LanguageSwitcherDoesNotAgreeWithLanguageManager()
{
Action create = () => new LanguageSwitcher(LanguageWithNoName);
create.ShouldThrow<InvalidOperationException>("Nope, there isn't. Sorry buddy.");
}
I Default To English
[Test]
public void GlobalsDefaultsToUs()
{
Globals.Load();
Globals.DefaultCulture.Name.Should().Be("en-US", "We are in US");
Globals.DefaultCulture.TwoLetterISOLanguageName.Should().Be("en", "And of course we speak English");
}
[Test]
public void SettingsDefaultsToEn()
{
Settings.DefaultLanguage.Should().Be("en", "English is the world language");
Settings.ClientLanguage.Should().Be("en", "Did I tell you that English is the world language?");
}
I Default To English and American English
[Test]
public void DataProviderKnowsOfTwoLanguages()
{
var provider = new SmartDataProvider();
var context = new CallContext(new DataManager(Database.GetDatabase("master")), 0);
LanguageCollection languages = provider.GetLanguages(context);
languages.Should().HaveCount(2);
languages.Should().Contain(Language.Parse("en"), "English is the world language");
languages.Should().Contain(Language.Parse("en-US"), "Wait... and so is American English!");
languages.Should().NotContain(Language.Parse(LanguageWithNoName), "... sorry buddy");
}
🙂
