Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more tests for component model #7221

Merged
merged 1 commit into from
Jul 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using Serenity.Navigation;

namespace Serenity.Tests.ComponentModel;

public class NavigationGroupAttributeTests
{
[Fact]
public void Constructor_SetsPropertiesCorrectly_WithAllParameters()
{
int order = 1;
string title = "GroupTitle";
string icon = "icon-class";
var attribute = new NavigationGroupAttribute(order, title, icon);
Assert.Equal(order, attribute.Order);
Assert.Equal(title, attribute.Title);
Assert.Equal(icon, attribute.IconClass);
}

[Fact]
public void Constructor_SetsPropertiesCorrectly_WithTitleAndIcon()
{
string title = "GroupTitle";
string icon = "icon-class";
var attribute = new NavigationGroupAttribute(title, icon);
Assert.Equal(int.MaxValue, attribute.Order);
Assert.Equal(title, attribute.Title);
Assert.Equal(icon, attribute.IconClass);
}

[Fact]
public void Constructor_SetsPropertiesCorrectly_WithTitleOnly()
{
string title = "GroupTitle";
var attribute = new NavigationGroupAttribute(title);
Assert.Equal(int.MaxValue, attribute.Order);
Assert.Equal(title, attribute.Title);
Assert.Null(attribute.IconClass);
}

[Fact]
public void IncludeProperty_CanBeSetAndRetrieved()
{
var attribute = new NavigationGroupAttribute("Title");
string[] includePaths = { "B/", "C/" };
attribute.Include = includePaths;
Assert.Equal(includePaths, attribute.Include);
}

[Fact]
public void DefaultProperty_CanBeSetAndRetrieved()
{
var attribute = new NavigationGroupAttribute("Title");
attribute.Default = true;
Assert.True(attribute.Default);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
using Serenity.Navigation;


namespace Serenity.Tests.ComponentModel
{
public class NavigationItemAttributeTests
{
public class MyNavigationItemAttribute(int order, string path, string url, object permission, string icon)
: NavigationItemAttribute(order, path, url, permission, icon)
{
}

[Fact]
public void Constructor_InitializesPropertiesCorrectly_WithPathContainingSlash()
{

int order = 1;
string path = "category/item";
string url = "http://example.com";
object permission = "read";
string icon = "icon-class";
var attribute = new MyNavigationItemAttribute(order, path, url, permission, icon);
Assert.Equal("category", attribute.Category);
Assert.Equal("item", attribute.Title);
Assert.Equal(order, attribute.Order);
Assert.Equal("read", attribute.Permission);
Assert.Equal("icon-class", attribute.IconClass);
Assert.Equal(url, attribute.Url);
}

[Fact]
public void Constructor_InitializesPropertiesCorrectly_WithPathWithoutSlash()
{

int order = 2;
string path = "item";
string url = "http://example.com";
object permission = "write";
string icon = "icon-class";
var attribute = new MyNavigationItemAttribute(order, path, url, permission, icon);
Assert.Null(attribute.Category);
Assert.Equal("item", attribute.Title);
Assert.Equal(order, attribute.Order);
Assert.Equal("write", attribute.Permission);
Assert.Equal("icon-class", attribute.IconClass);
Assert.Equal(url, attribute.Url);
}

[Fact]
public void Constructor_InitializesPropertiesCorrectly_WithNullPath()
{
int order = 3;
string path = null;
string url = "http://example.com";
object permission = null;
string icon = "icon-class";
var attribute = new MyNavigationItemAttribute(order, path, url, permission, icon);
Assert.Null(attribute.Category);
Assert.Equal("", attribute.Title);
Assert.Equal(order, attribute.Order);
Assert.Null(attribute.Permission);
Assert.Equal("icon-class", attribute.IconClass);
Assert.Equal(url, attribute.Url);
}

[Fact]
public void Constructor_InitializesPropertiesCorrectly_WithEmptyPath()
{
int order = 4;
string path = "";
string url = "http://example.com";
object permission = null;
string icon = "icon-class";
var attribute = new MyNavigationItemAttribute(order, path, url, permission, icon);
Assert.Null(attribute.Category);
Assert.Equal("", attribute.Title);
Assert.Equal(order, attribute.Order);
Assert.Null(attribute.Permission);
Assert.Equal("icon-class", attribute.IconClass);
Assert.Equal(url, attribute.Url);
}

[Fact]
public void Title_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Title = "sometext"
};
Assert.Equal("sometext", attribute.Title);
}

[Fact]
public void Title_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Title = null
};
Assert.Null(attribute.Title);
}

[Fact]
public void FullPath_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
FullPath = "sometext"
};
Assert.Equal("sometext", attribute.FullPath);
}

[Fact]
public void FullPath_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
FullPath = null
};
Assert.Null(attribute.FullPath);
}

[Fact]
public void Category_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Category = "sometext"
};
Assert.Equal("sometext", attribute.Category);
}

[Fact]
public void Category_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Category = null
};
Assert.Null(attribute.Category);
}

[Fact]
public void IconClass_IsNull_ByDefault()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, null);
Assert.Null(attribute.IconClass);
}

[Fact]
public void IconClass_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
IconClass = "sometext"
};
Assert.Equal("sometext", attribute.IconClass);
}

[Fact]
public void IconClass_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
IconClass = null
};
Assert.Null(attribute.IconClass);
}

[Fact]
public void ItemClass_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
ItemClass = "sometext"
};
Assert.Equal("sometext", attribute.ItemClass);
}

[Fact]
public void ItemClass_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
ItemClass = null
};
Assert.Null(attribute.ItemClass);
}


[Fact]
public void Url_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Url = "sometext"
};
Assert.Equal("sometext", attribute.Url);
}

[Fact]
public void Url_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Url = null
};
Assert.Null(attribute.Url);
}

[Fact]
public void Target_CanBeSet()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Target = "sometext"
};
Assert.Equal("sometext", attribute.Target);
}

[Fact]
public void Target_CanBeSet_ToNull()
{
var attribute = new MyNavigationItemAttribute(1, "path", null, null, "icon")
{
Target = null
};
Assert.Null(attribute.Target);
}
}
}

Loading
Loading