feat(infra): BATCH 4 - Permiso/RolPermiso repos Dapper + tests integracion [UDT-005]
This commit is contained in:
@@ -46,6 +46,8 @@ public sealed class SqlTestFixture : IAsyncLifetime
|
||||
{
|
||||
await _respawner.ResetAsync(_connection);
|
||||
await SeedRolCanonicalAsync();
|
||||
await SeedPermisosCanonicalAsync();
|
||||
await SeedRolPermisosCanonicalAsync();
|
||||
await SeedAdminAsync();
|
||||
}
|
||||
|
||||
@@ -81,6 +83,93 @@ public sealed class SqlTestFixture : IAsyncLifetime
|
||||
}
|
||||
}
|
||||
|
||||
private async Task SeedPermisosCanonicalAsync()
|
||||
{
|
||||
const string sql = """
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
MERGE dbo.Permiso AS t
|
||||
USING (VALUES
|
||||
('ventas:contado:crear', N'Cargar orden contado', NULL, 'ventas'),
|
||||
('ventas:contado:modificar', N'Modificar orden contado', NULL, 'ventas'),
|
||||
('ventas:contado:cobrar', N'Cobrar orden contado', NULL, 'ventas'),
|
||||
('ventas:contado:facturar', N'Facturar orden contado', NULL, 'ventas'),
|
||||
('ventas:ctacte:crear', N'Cargar orden cuenta corriente', NULL, 'ventas'),
|
||||
('ventas:ctacte:facturar', N'Facturar lote cuenta corriente', NULL, 'ventas'),
|
||||
('textos:editar', N'Editar textos', NULL, 'textos'),
|
||||
('textos:reclamos:ver', N'Ver reclamos de textos', NULL, 'textos'),
|
||||
('pauta:azanu:ver', N'Ver AZANU en pauta', NULL, 'pauta'),
|
||||
('pauta:limpiar', N'Limpieza de pauta', NULL, 'pauta'),
|
||||
('pauta:recursos:fueradehora', N'Recursos fuera de hora', NULL, 'pauta'),
|
||||
('productores:deuda:ver', N'Ver deuda propia de productores', NULL, 'productores'),
|
||||
('productores:pendientes:crear', N'Cargar pendientes de productores', NULL, 'productores'),
|
||||
('productores:deuda:bypass', N'Bypass de deuda de productores', NULL, 'productores'),
|
||||
('administracion:usuarios:gestionar', N'Gestionar usuarios del sistema', N'Crear, editar y desactivar usuarios', 'administracion'),
|
||||
('administracion:tarifarios:gestionar', N'Gestionar tarifarios', N'Crear y modificar tarifarios de publicidad', 'administracion'),
|
||||
('administracion:medios:gestionar', N'Gestionar medios publicitarios', N'Alta y configuracion de medios', 'administracion'),
|
||||
('administracion:auditoria:ver', N'Ver logs de auditoria', N'Acceso al dashboard de auditoria', 'administracion')
|
||||
) AS s (Codigo, Nombre, Descripcion, Modulo)
|
||||
ON t.Codigo = s.Codigo
|
||||
WHEN NOT MATCHED BY TARGET THEN
|
||||
INSERT (Codigo, Nombre, Descripcion, Modulo)
|
||||
VALUES (s.Codigo, s.Nombre, s.Descripcion, s.Modulo);
|
||||
""";
|
||||
await _connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
private async Task SeedRolPermisosCanonicalAsync()
|
||||
{
|
||||
const string sql = """
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
MERGE dbo.RolPermiso AS t
|
||||
USING (
|
||||
SELECT r.Id AS RolId, p.Id AS PermisoId
|
||||
FROM (VALUES
|
||||
('admin', 'ventas:contado:crear'),
|
||||
('admin', 'ventas:contado:modificar'),
|
||||
('admin', 'ventas:contado:cobrar'),
|
||||
('admin', 'ventas:contado:facturar'),
|
||||
('admin', 'ventas:ctacte:crear'),
|
||||
('admin', 'ventas:ctacte:facturar'),
|
||||
('admin', 'textos:editar'),
|
||||
('admin', 'textos:reclamos:ver'),
|
||||
('admin', 'pauta:azanu:ver'),
|
||||
('admin', 'pauta:limpiar'),
|
||||
('admin', 'pauta:recursos:fueradehora'),
|
||||
('admin', 'productores:deuda:ver'),
|
||||
('admin', 'productores:pendientes:crear'),
|
||||
('admin', 'productores:deuda:bypass'),
|
||||
('admin', 'administracion:usuarios:gestionar'),
|
||||
('admin', 'administracion:tarifarios:gestionar'),
|
||||
('admin', 'administracion:medios:gestionar'),
|
||||
('admin', 'administracion:auditoria:ver'),
|
||||
('cajero', 'ventas:contado:crear'),
|
||||
('cajero', 'ventas:contado:modificar'),
|
||||
('cajero', 'ventas:contado:cobrar'),
|
||||
('cajero', 'ventas:contado:facturar'),
|
||||
('operador_ctacte', 'ventas:ctacte:crear'),
|
||||
('operador_ctacte', 'ventas:ctacte:facturar'),
|
||||
('picadora', 'textos:editar'),
|
||||
('picadora', 'textos:reclamos:ver'),
|
||||
('jefe_publicidad', 'textos:editar'),
|
||||
('jefe_publicidad', 'textos:reclamos:ver'),
|
||||
('jefe_publicidad', 'pauta:azanu:ver'),
|
||||
('jefe_publicidad', 'pauta:limpiar'),
|
||||
('jefe_publicidad', 'pauta:recursos:fueradehora'),
|
||||
('jefe_publicidad', 'productores:deuda:ver'),
|
||||
('jefe_publicidad', 'productores:deuda:bypass'),
|
||||
('productor', 'productores:deuda:ver'),
|
||||
('productor', 'productores:pendientes:crear'),
|
||||
('diagramacion', 'pauta:azanu:ver')
|
||||
) AS x (RolCodigo, PermisoCodigo)
|
||||
JOIN dbo.Rol r ON r.Codigo = x.RolCodigo
|
||||
JOIN dbo.Permiso p ON p.Codigo = x.PermisoCodigo
|
||||
) AS s ON t.RolId = s.RolId AND t.PermisoId = s.PermisoId
|
||||
WHEN NOT MATCHED BY TARGET THEN
|
||||
INSERT (RolId, PermisoId) VALUES (s.RolId, s.PermisoId);
|
||||
""";
|
||||
await _connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
private async Task SeedAdminAsync()
|
||||
{
|
||||
const string sql = """
|
||||
|
||||
Reference in New Issue
Block a user