Allow merge activity logging for locations assets and characters
This commit is contained in:
parent
a666696a9f
commit
84ed078eba
@ -21,6 +21,14 @@ BEGIN TRY
|
||||
INSERT dbo.LocationRelationships(FromLocationID, ToLocationID, LocationRelationshipTypeID)
|
||||
VALUES (@Source,@Target,@RelType),(@Source,@Child,@RelType),(@Target,@Child,@RelType);
|
||||
EXEC dbo.Location_Merge @Source, @Target, @UserID;
|
||||
-- Exercise the post-merge activity write used by the service, not just the merge procedure.
|
||||
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @UserID=@UserID,
|
||||
@ActivityType=N'Merged', @EntityType=N'Location', @EntityID=@Target,
|
||||
@EntityName=N'Merge regression target', @Description=N'Merge regression activity';
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.ProjectActivity WHERE ProjectID=@ProjectID
|
||||
AND EntityType=N'Location' AND EntityID=@Target AND ActivityType=N'Merged')
|
||||
THROW 51001, 'Location merge activity was not recorded.', 1;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Locations WHERE LocationID=@Source AND IsArchived=1) THROW 51001, 'Source location was not archived.', 1;
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Locations WHERE LocationID=@Child AND ParentLocationID=@Target) THROW 51001, 'Child location was not moved.', 1;
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.Scenes WHERE SceneID=@SceneID AND PrimaryLocationID=@Target) THROW 51001, 'Primary scene location was not moved.', 1;
|
||||
@ -45,6 +53,14 @@ BEGIN TRY
|
||||
DECLARE @CustodyID int=SCOPE_IDENTITY(), @DepType int=(SELECT TOP (1) AssetDependencyTypeID FROM dbo.AssetDependencyTypes);
|
||||
INSERT dbo.AssetDependencies(SourceAssetID,TargetAssetID,AssetDependencyTypeID) VALUES (@Source,@Target,@DepType),(@Source,@Other,@DepType),(@Target,@Other,@DepType);
|
||||
EXEC dbo.StoryAsset_Merge @Source,@Target,@UserID;
|
||||
-- Exercise the post-merge activity write used by the service, not just the merge procedure.
|
||||
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @UserID=@UserID,
|
||||
@ActivityType=N'Merged', @EntityType=N'Asset', @EntityID=@Target,
|
||||
@EntityName=N'Merge regression target', @Description=N'Merge regression activity';
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.ProjectActivity WHERE ProjectID=@ProjectID
|
||||
AND EntityType=N'Asset' AND EntityID=@Target AND ActivityType=N'Merged')
|
||||
THROW 51001, 'Asset merge activity was not recorded.', 1;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.StoryAssets WHERE StoryAssetID=@Source AND IsArchived=1) THROW 51001, 'Source asset was not archived.', 1;
|
||||
IF (SELECT COUNT(*) FROM dbo.AssetAliases WHERE StoryAssetID=@Target) <> 3 THROW 51001, 'Asset names were lost or duplicated.', 1;
|
||||
IF (SELECT COUNT(*) FROM dbo.WordCompanionSceneAssets WHERE SceneID=@SceneID AND StoryAssetID=@Target) <> 1 THROW 51001, 'Duplicate asset scene link.', 1;
|
||||
|
||||
38
PlotLine.Tests/Sql/ProjectActivityMerge.sql
Normal file
38
PlotLine.Tests/Sql/ProjectActivityMerge.sql
Normal file
@ -0,0 +1,38 @@
|
||||
-- Exercise the same audit procedure used by the merge services; leave no data behind.
|
||||
SET XACT_ABORT ON;
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
DECLARE @ProjectID int, @UserID int;
|
||||
SELECT TOP (1) @ProjectID=ProjectID, @UserID=UserID FROM dbo.ProjectUserAccess WHERE IsActive=1;
|
||||
IF @ProjectID IS NULL THROW 51001, 'Audit tests require a project with an active user.', 1;
|
||||
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @UserID=@UserID,
|
||||
@ActivityType=N'Merged', @EntityType=N'Character', @EntityName=N'Merge audit regression';
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.ProjectActivity WHERE ProjectID=@ProjectID
|
||||
AND ActivityType=N'Merged' AND EntityType=N'Character' AND EntityName=N'Merge audit regression')
|
||||
THROW 51001, 'Character merge activity was not recorded.', 1;
|
||||
-- Preserve all activity types that were allowed before the merge migration.
|
||||
INSERT dbo.ProjectActivity(ProjectID,UserID,ActivityType,EntityType,EntityName)
|
||||
SELECT @ProjectID,@UserID,ActivityType,N'Project',N'Merge audit regression'
|
||||
FROM (VALUES (N'Created'),(N'Updated'),(N'Deleted'),(N'Archived'),(N'Restored'),
|
||||
(N'Shared'),(N'CollaboratorRemoved'),(N'Exported')) types(ActivityType);
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT N'PASS: character merge and all existing activity types; fixtures rolled back' AS Result;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
GO
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
DECLARE @ProjectID int=(SELECT TOP (1) ProjectID FROM dbo.Projects);
|
||||
EXEC dbo.ProjectAudit_Record @ProjectID=@ProjectID, @ActivityType=N'NotAnActivityType',
|
||||
@EntityType=N'Project', @EntityName=N'Merge audit regression';
|
||||
THROW 51001, 'Unknown activity type was accepted.', 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
IF ERROR_NUMBER() <> 547 OR ERROR_MESSAGE() NOT LIKE N'%CK_ProjectActivity_ActivityType%' THROW;
|
||||
SELECT N'PASS: unknown activity types remain rejected; fixtures rolled back' AS Result;
|
||||
END CATCH;
|
||||
GO
|
||||
24
PlotLine/Sql/194_ProjectActivityMergeType.sql
Normal file
24
PlotLine/Sql/194_ProjectActivityMergeType.sql
Normal file
@ -0,0 +1,24 @@
|
||||
-- Character, location and asset merge services record a Merged activity after
|
||||
-- moving references. Permit that activity without weakening the existing rules.
|
||||
SET XACT_ABORT ON;
|
||||
SET ANSI_NULLS ON;
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
IF EXISTS (SELECT 1 FROM sys.check_constraints
|
||||
WHERE name = N'CK_ProjectActivity_ActivityType'
|
||||
AND parent_object_id = OBJECT_ID(N'dbo.ProjectActivity'))
|
||||
ALTER TABLE dbo.ProjectActivity DROP CONSTRAINT CK_ProjectActivity_ActivityType;
|
||||
|
||||
ALTER TABLE dbo.ProjectActivity WITH CHECK
|
||||
ADD CONSTRAINT CK_ProjectActivity_ActivityType CHECK
|
||||
(ActivityType IN (N'Created', N'Updated', N'Deleted', N'Archived', N'Restored',
|
||||
N'Shared', N'CollaboratorRemoved', N'Exported', N'Merged'));
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
GO
|
||||
Loading…
x
Reference in New Issue
Block a user