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"); }); }); });