admin/cypress/e2e/roles-permissions.cy.ts

231 lines
8.1 KiB
TypeScript

describe("Roles and Permissions Management", () => {
beforeEach(() => {
cy.login();
});
describe("Roles Management", () => {
beforeEach(() => {
cy.visit("/roles");
cy.waitForLoading();
});
it("should display roles list page", () => {
cy.contains("مدیریت نقش‌ها").should("be.visible");
cy.contains("مدیریت نقش‌ها و دسترسی‌های سیستم").should("be.visible");
cy.get('[title="نقش جدید"]').should("be.visible");
});
it("should create a new role", () => {
cy.get('[title="نقش جدید"]').click();
cy.url().should("include", "/roles/create");
cy.contains("نقش جدید").should("be.visible");
// Fill role form
cy.get('input[name="name"]').type("مدیر محصولات");
cy.get('textarea[name="description"]').type(
"مسئول مدیریت محصولات و کاتگوری‌ها"
);
cy.get('button[type="submit"]').click();
cy.url().should("include", "/roles");
cy.contains("نقش با موفقیت ایجاد شد").should("be.visible");
cy.contains("مدیر محصولات").should("be.visible");
});
it("should edit a role", () => {
cy.get('[title="ویرایش"]').first().click();
cy.url().should("include", "/roles/");
cy.url().should("include", "/edit");
cy.get('input[name="name"]').clear().type("مدیر فروش");
cy.get('textarea[name="description"]')
.clear()
.type("مسئول مدیریت فروش و سفارشات");
cy.get('button[type="submit"]').click();
cy.url().should("include", "/roles");
cy.contains("نقش با موفقیت ویرایش شد").should("be.visible");
cy.contains("مدیر فروش").should("be.visible");
});
it("should delete a role", () => {
cy.get('[title="حذف"]').first().click();
cy.get(".modal").should("be.visible");
cy.get("button").contains("حذف").click();
cy.contains("نقش با موفقیت حذف شد").should("be.visible");
});
it("should view role details", () => {
cy.get('[title="مشاهده جزئیات"]').first().click();
cy.url().should("include", "/roles/");
cy.contains("جزئیات نقش").should("be.visible");
cy.contains("لیست کاربران").should("be.visible");
cy.contains("دسترسی‌ها").should("be.visible");
});
it("should manage role permissions", () => {
cy.get('[title="مدیریت دسترسی‌ها"]').first().click();
cy.url().should("include", "/roles/");
cy.url().should("include", "/permissions");
cy.contains("مدیریت دسترسی‌های نقش").should("be.visible");
// Assign permission
cy.get('input[type="checkbox"]').first().check();
cy.get("button").contains("ذخیره تغییرات").click();
cy.contains("دسترسی‌ها با موفقیت به‌روزرسانی شد").should("be.visible");
});
it("should search roles", () => {
cy.get('input[placeholder*="جستجو"]').type("مدیر");
cy.get("button").contains("جستجو").click();
cy.waitForLoading();
cy.get("table tbody tr").should("contain", "مدیر");
});
it("should validate role form", () => {
cy.get('[title="نقش جدید"]').click();
cy.get('button[type="submit"]').click();
cy.contains("نام نقش الزامی است").should("be.visible");
});
});
describe("Permissions Management", () => {
beforeEach(() => {
cy.visit("/permissions");
cy.waitForLoading();
});
it("should display permissions list page", () => {
cy.contains("لیست دسترسی‌ها").should("be.visible");
cy.contains("نمایش دسترسی‌های سیستم").should("be.visible");
cy.get('[title="دسترسی جدید"]').should("be.visible");
});
it("should create a new permission", () => {
cy.get('[title="دسترسی جدید"]').click();
cy.url().should("include", "/permissions/create");
cy.contains("دسترسی جدید").should("be.visible");
// Fill permission form
cy.get('input[name="title"]').type("مدیریت کاربران");
cy.get('textarea[name="description"]').type(
"دسترسی به مدیریت کاربران سیستم"
);
cy.get('input[name="resource"]').type("users");
cy.get('input[name="action"]').type("manage");
cy.get('button[type="submit"]').click();
cy.url().should("include", "/permissions");
cy.contains("دسترسی با موفقیت ایجاد شد").should("be.visible");
cy.contains("مدیریت کاربران").should("be.visible");
});
it("should edit a permission", () => {
cy.get('[title="ویرایش"]').first().click();
cy.url().should("include", "/permissions/");
cy.url().should("include", "/edit");
cy.get('input[name="title"]').clear().type("نمایش کاربران");
cy.get('input[name="action"]').clear().type("view");
cy.get('button[type="submit"]').click();
cy.url().should("include", "/permissions");
cy.contains("دسترسی با موفقیت ویرایش شد").should("be.visible");
cy.contains("نمایش کاربران").should("be.visible");
});
it("should delete a permission", () => {
cy.get('[title="حذف"]').first().click();
cy.get(".modal").should("be.visible");
cy.get("button").contains("حذف").click();
cy.contains("دسترسی با موفقیت حذف شد").should("be.visible");
});
it("should search permissions", () => {
cy.get('input[placeholder*="جستجو"]').type("کاربر");
cy.get("button").contains("جستجو").click();
cy.waitForLoading();
cy.get("table tbody tr").should("contain", "کاربر");
});
it("should filter permissions by resource", () => {
cy.get('select[name="resource"]').select("products");
cy.get("button").contains("اعمال فیلتر").click();
cy.waitForLoading();
cy.get("table tbody tr").should("contain", "products");
});
it("should validate permission form", () => {
cy.get('[title="دسترسی جدید"]').click();
cy.get('button[type="submit"]').click();
cy.contains("عنوان دسترسی الزامی است").should("be.visible");
cy.contains("منبع الزامی است").should("be.visible");
cy.contains("عمل الزامی است").should("be.visible");
});
it("should show permission usage in roles", () => {
cy.get('[title="نمایش استفاده"]').first().click();
cy.get(".modal").should("be.visible");
cy.contains("نقش‌های دارای این دسترسی").should("be.visible");
});
});
describe("Role-Permission Assignment", () => {
it("should assign multiple permissions to role", () => {
cy.visit("/roles");
cy.get('[title="مدیریت دسترسی‌ها"]').first().click();
// Select multiple permissions
cy.get('input[type="checkbox"]').check(["1", "2", "3"]);
cy.get("button").contains("ذخیره تغییرات").click();
cy.contains("دسترسی‌ها با موفقیت به‌روزرسانی شد").should("be.visible");
});
it("should remove permission from role", () => {
cy.visit("/roles");
cy.get('[title="مدیریت دسترسی‌ها"]').first().click();
// Uncheck permission
cy.get('input[type="checkbox"]:checked').first().uncheck();
cy.get("button").contains("ذخیره تغییرات").click();
cy.contains("دسترسی‌ها با موفقیت به‌روزرسانی شد").should("be.visible");
});
it("should show permission hierarchy", () => {
cy.visit("/roles");
cy.get('[title="مدیریت دسترسی‌ها"]').first().click();
// Should show permissions grouped by category
cy.contains("کاربران").should("be.visible");
cy.contains("محصولات").should("be.visible");
cy.contains("سیستم").should("be.visible");
});
});
});