using FluentAssertions; using foodmarket.Domain.Organizations; using Xunit; namespace foodmarket.UnitTests; /// RolePermissions — POCO с 34 булевыми флагами и static-фабрикой /// All() которая создаёт «полный» набор для системной роли Администратор. /// Раньше в репо не было тестов на эту сущность. public class RolePermissionsTests { [Fact] public void Default_constructor_all_false() { var p = new RolePermissions(); // Sanity-check: default RolePermissions = «всё запрещено». Это важно // потому что новая роль создаётся с этим значением, и пока юзер не // выставил флаги — она не имеет доступа. p.ProductsView.Should().BeFalse(); p.RetailSalesOperate.Should().BeFalse(); p.OrgSettingsManage.Should().BeFalse(); p.LoyaltyManage.Should().BeFalse(); } [Fact] public void All_factory_enables_every_permission() { var p = RolePermissions.All(); // Каталог p.ProductsView.Should().BeTrue(); p.ProductsEdit.Should().BeTrue(); p.ProductsDelete.Should().BeTrue(); p.ProductGroupsManage.Should().BeTrue(); p.PriceTypesManage.Should().BeTrue(); p.UnitsManage.Should().BeTrue(); // Закупки p.SuppliesView.Should().BeTrue(); p.SuppliesEdit.Should().BeTrue(); p.SuppliesPost.Should().BeTrue(); p.SuppliesDelete.Should().BeTrue(); // Продажи p.DemandsView.Should().BeTrue(); p.DemandsEdit.Should().BeTrue(); p.DemandsPost.Should().BeTrue(); p.RetailSalesOperate.Should().BeTrue(); p.RetailSalesRefund.Should().BeTrue(); // Контрагенты p.CounterpartiesView.Should().BeTrue(); p.CounterpartiesEdit.Should().BeTrue(); p.CounterpartiesDelete.Should().BeTrue(); // Склад p.StocksView.Should().BeTrue(); p.InventoryEdit.Should().BeTrue(); p.LossEdit.Should().BeTrue(); p.EnterEdit.Should().BeTrue(); p.TransferEdit.Should().BeTrue(); // Отчёты p.ReportsView.Should().BeTrue(); p.ReportsFinanceView.Should().BeTrue(); p.ReportsStockView.Should().BeTrue(); // Настройки p.OrgSettingsManage.Should().BeTrue(); p.EmployeesManage.Should().BeTrue(); p.RolesManage.Should().BeTrue(); p.StoresManage.Should().BeTrue(); p.RetailPointsManage.Should().BeTrue(); p.CashRegistersManage.Should().BeTrue(); p.IntegrationsManage.Should().BeTrue(); // Sprint 9 p.LoyaltyManage.Should().BeTrue(); p.PromotionsManage.Should().BeTrue(); } [Fact] public void Individual_flags_can_be_set() { var p = new RolePermissions { ProductsView = true, RetailSalesOperate = true, }; p.ProductsView.Should().BeTrue(); p.RetailSalesOperate.Should().BeTrue(); // Остальные остаются false. p.ProductsEdit.Should().BeFalse(); p.OrgSettingsManage.Should().BeFalse(); } }