Esempio n. 1
0
    public void Is_Built_Correctly()
    {
        // Arrange
        const int    id                  = 1;
        var          key                 = Guid.NewGuid();
        const bool   useInEditor         = true;
        const int    cacheDuration       = 3;
        const string alias               = "test";
        const string name                = "Test";
        const string source              = "~/script.cshtml";
        const bool   cacheByPage         = false;
        const bool   cacheByMember       = true;
        const bool   dontRender          = true;
        const int    propertyId          = 6;
        const string propertyAlias       = "rewq";
        const string propertyName        = "REWQ";
        const int    propertySortOrder   = 1;
        const string propertyEditorAlias = "asdfasdf";

        var builder = new MacroBuilder();

        // Act
        var macro = builder
                    .WithId(id)
                    .WithKey(key)
                    .WithUseInEditor(useInEditor)
                    .WithCacheDuration(cacheDuration)
                    .WithAlias(alias)
                    .WithName(name)
                    .WithSource(source)
                    .WithCacheByPage(cacheByPage)
                    .WithCacheByMember(cacheByMember)
                    .WithDontRender(dontRender)
                    .AddProperty()
                    .WithId(propertyId)
                    .WithAlias(propertyAlias)
                    .WithName(propertyName)
                    .WithSortOrder(propertySortOrder)
                    .WithEditorAlias(propertyEditorAlias)
                    .Done()
                    .Build();

        // Assert
        Assert.AreEqual(id, macro.Id);
        Assert.AreEqual(key, macro.Key);
        Assert.AreEqual(useInEditor, macro.UseInEditor);
        Assert.AreEqual(cacheDuration, macro.CacheDuration);
        Assert.AreEqual(alias, macro.Alias);
        Assert.AreEqual(name, macro.Name);
        Assert.AreEqual(source, macro.MacroSource);
        Assert.AreEqual(cacheByPage, macro.CacheByPage);
        Assert.AreEqual(cacheByMember, macro.CacheByMember);
        Assert.AreEqual(dontRender, macro.DontRender);
        Assert.AreEqual(1, macro.Properties.Count);
        Assert.AreEqual(propertyId, macro.Properties[0].Id);
        Assert.AreEqual(propertyAlias, macro.Properties[0].Alias);
        Assert.AreEqual(propertyName, macro.Properties[0].Name);
        Assert.AreEqual(propertySortOrder, macro.Properties[0].SortOrder);
        Assert.AreEqual(propertyEditorAlias, macro.Properties[0].EditorAlias);
    }
Esempio n. 2
0
    public void Can_Deep_Clone()
    {
        var macro = _builder
                    .WithId(1)
                    .WithUseInEditor(true)
                    .WithCacheDuration(3)
                    .WithAlias("test")
                    .WithName("Test")
                    .WithSource("~/script.cshtml")
                    .WithCacheByMember(true)
                    .WithDontRender(true)
                    .AddProperty()
                    .WithId(6)
                    .WithAlias("rewq")
                    .WithName("REWQ")
                    .WithSortOrder(1)
                    .WithEditorAlias("asdfasdf")
                    .Done()
                    .Build();

        var clone = (Macro)macro.DeepClone();

        Assert.AreNotSame(clone, macro);
        Assert.AreEqual(clone, macro);
        Assert.AreEqual(clone.Id, macro.Id);

        Assert.AreEqual(clone.Properties.Count, macro.Properties.Count);

        for (var i = 0; i < clone.Properties.Count; i++)
        {
            Assert.AreEqual(clone.Properties[i], macro.Properties[i]);
            Assert.AreNotSame(clone.Properties[i], macro.Properties[i]);
        }

        Assert.AreNotSame(clone.Properties, macro.Properties);
        Assert.AreNotSame(clone.AddedProperties, macro.AddedProperties);
        Assert.AreNotSame(clone.RemovedProperties, macro.RemovedProperties);

        // This double verifies by reflection
        var allProps = clone.GetType().GetProperties();

        foreach (var propertyInfo in allProps)
        {
            Assert.AreEqual(propertyInfo.GetValue(clone, null), propertyInfo.GetValue(macro, null));
        }

        // Need to ensure the event handlers are wired.
        var asDirty = (ICanBeDirty)clone;

        Assert.IsFalse(asDirty.IsPropertyDirty("Properties"));
        clone.Properties.Add(new MacroProperty(3, Guid.NewGuid(), "asdf", "SDF", 3, "asdfasdf"));
        Assert.IsTrue(asDirty.IsPropertyDirty("Properties"));
        Assert.AreEqual(1, clone.AddedProperties.Count());
        clone.Properties.Remove("rewq");
        Assert.AreEqual(1, clone.RemovedProperties.Count());
    }