Feat/1246 Allow reordering senses #511
fw-lite.yaml
on: pull_request
Build FW Lite and run tests
22m 24s
Publish FW Lite app for Mac
0s
Publish FW Lite app for Linux
0s
Publish FW Lite app for Windows
0s
Create Release
0s
Annotations
10 errors and 10 warnings
LcmCrdt.Tests.DataModelSnapshotTests.VerifyChangeModels
VerifyException : Directory: D:\a\languageforge-lexbox\languageforge-lexbox\backend\FwLite\LcmCrdt.Tests
NotEqual:
- Received: DataModelSnapshotTests.VerifyChangeModels.received.txt
Verified: DataModelSnapshotTests.VerifyChangeModels.verified.txt
FileContent:
NotEqual:
Received: DataModelSnapshotTests.VerifyChangeModels.received.txt
{
DerivedTypes: [
{
DerivedType: JsonPatchChange<Entry>,
TypeDiscriminator: jsonPatch:Entry
},
{
DerivedType: JsonPatchChange<Sense>,
TypeDiscriminator: jsonPatch:Sense
},
{
DerivedType: JsonPatchChange<ExampleSentence>,
TypeDiscriminator: jsonPatch:ExampleSentence
},
{
DerivedType: JsonPatchChange<WritingSystem>,
TypeDiscriminator: jsonPatch:WritingSystem
},
{
DerivedType: JsonPatchChange<PartOfSpeech>,
TypeDiscriminator: jsonPatch:PartOfSpeech
},
{
DerivedType: JsonPatchChange<SemanticDomain>,
TypeDiscriminator: jsonPatch:SemanticDomain
},
{
DerivedType: JsonPatchChange<ComplexFormType>,
TypeDiscriminator: jsonPatch:ComplexFormType
},
{
DerivedType: DeleteChange<Entry>,
TypeDiscriminator: delete:Entry
},
{
DerivedType: DeleteChange<Sense>,
TypeDiscriminator: delete:Sense
},
{
DerivedType: DeleteChange<ExampleSentence>,
TypeDiscriminator: delete:ExampleSentence
},
{
DerivedType: DeleteChange<WritingSystem>,
TypeDiscriminator: delete:WritingSystem
},
{
DerivedType: DeleteChange<PartOfSpeech>,
TypeDiscriminator: delete:PartOfSpeech
},
{
DerivedType: DeleteChange<SemanticDomain>,
TypeDiscriminator: delete:SemanticDomain
},
{
DerivedType: DeleteChange<ComplexFormType>,
TypeDiscriminator: delete:ComplexFormType
},
{
DerivedType: DeleteChange<ComplexFormComponent>,
TypeDiscriminator: delete:ComplexFormComponent
},
{
DerivedType: SetPartOfSpeechChange,
TypeDiscriminator: SetPartOfSpeechChange
},
{
DerivedType: AddSemanticDomainChange,
TypeDiscriminator: AddSemanticDomainChange
},
{
DerivedType: RemoveSemanticDomainChange,
TypeDiscriminator: RemoveSemanticDomainChange
},
{
DerivedType: ReplaceSemanticDomainChange,
TypeDiscriminator: ReplaceSemanticDomainChange
},
{
DerivedType: CreateEntryChange,
TypeDiscriminator: CreateEntryChange
},
{
DerivedType: CreateSenseChange,
TypeDiscriminator: CreateSenseChange
},
{
DerivedType: CreateExampleSentenceChange,
TypeDiscriminator: CreateExampleSentenceChange
},
{
DerivedType: CreatePartOfSpeechChange,
TypeDiscriminator: CreatePartOfSpeechChange
},
{
DerivedType: CreateSemanticDomainChange,
TypeDiscriminator: CreateSemanticDomainChange
},
{
DerivedType: CreateWritingSystemChange,
TypeDiscriminator: CreateWritingSystemChange
},
{
DerivedType: AddComplexFormTypeChange,
TypeDiscriminator: AddComplexFormTypeChange
},
{
DerivedType: AddEntryComponentChange,
TypeDiscriminator: AddEntryComponentChange
},
{
DerivedType: RemoveComplexFormTypeChange,
TypeDiscriminator: RemoveComplexFormTypeChange
},
{
DerivedType: SetComplexFormComponentChange,
TypeDiscriminator: SetComplexFormComponentChange
},
{
DerivedType: CreateComplexFormType,
TypeDiscriminator: CreateComplexFormType
},
{
DerivedType: SetOrderChange<Sense>,
TypeDiscriminator: SetOrderChange`1
}
],
IgnoreUnrecognizedTypeDiscriminators: false,
TypeDiscriminatorPropertyName: $type
}
Verified: DataModelSnapshotTests.VerifyChangeModels.verified.txt
{
DerivedTypes: [
{
DerivedType: JsonPatchChange<Entry>,
TypeDiscriminator: jsonPatch:Entry
},
{
DerivedType: JsonPatchChange<Sense>,
TypeDiscriminator: jsonPatch:Sense
},
{
DerivedType: JsonPatchCha
|
LcmCrdt.Tests.DataModelSnapshotTests.VerifyDbModel
VerifyException : Directory: D:\a\languageforge-lexbox\languageforge-lexbox\backend\FwLite\LcmCrdt.Tests
NotEqual:
- Received: DataModelSnapshotTests.VerifyDbModel.received.txt
Verified: DataModelSnapshotTests.VerifyDbModel.verified.txt
FileContent:
NotEqual:
Received: DataModelSnapshotTests.VerifyDbModel.received.txt
Model:
EntityType: ProjectData
Properties:
Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd
ClientId (Guid) Required
FwProjectId (Guid?)
Name (string) Required
OriginDomain (string)
Keys:
Id PK
Annotations:
DiscriminatorProperty:
Relational:FunctionName:
Relational:Schema:
Relational:SqlQuery:
Relational:TableName: ProjectData
Relational:ViewName:
Relational:ViewSchema:
EntityType: ComplexFormComponent
Properties:
Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd
ComplexFormEntryId (Guid) Required FK Index
ComplexFormHeadword (string)
ComponentEntryId (Guid) Required FK Index
ComponentHeadword (string)
ComponentSenseId (Guid?) FK Index
Annotations:
Relational:ColumnName: ComponentSenseId
DeletedAt (DateTimeOffset?)
SnapshotId (no field, Guid?) Shadow FK Index
Keys:
Id PK
Foreign keys:
ComplexFormComponent {'ComplexFormEntryId'} -> Entry {'Id'} Required Cascade ToDependent: Components
ComplexFormComponent {'ComponentEntryId'} -> Entry {'Id'} Required Cascade ToDependent: ComplexForms
ComplexFormComponent {'ComponentSenseId'} -> Sense {'Id'} Cascade
ComplexFormComponent {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull
Indexes:
ComponentEntryId
ComponentSenseId
SnapshotId Unique
ComplexFormEntryId, ComponentEntryId Unique
Annotations:
Relational:Filter: ComponentSenseId IS NULL
ComplexFormEntryId, ComponentEntryId, ComponentSenseId Unique
Annotations:
Relational:Filter: ComponentSenseId IS NOT NULL
Annotations:
DiscriminatorProperty:
Relational:FunctionName:
Relational:Schema:
Relational:SqlQuery:
Relational:TableName: ComplexFormComponents
Relational:ViewName:
Relational:ViewSchema:
EntityType: ComplexFormType
Properties:
Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd
DeletedAt (DateTimeOffset?)
Name (MultiString) Required
Annotations:
Relational:ColumnType: jsonb
SnapshotId (no field, Guid?) Shadow FK Index
Keys:
Id PK
Foreign keys:
ComplexFormType {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull
Indexes:
SnapshotId Unique
Annotations:
DiscriminatorProperty:
Relational:FunctionName:
Relational:Schema:
Relational:SqlQuery:
Relational:TableName: ComplexFormType
Relational:ViewName:
Relational:ViewSchema:
EntityType: Entry
Properties:
Id (Guid) Required PK AfterSave:Throw ValueGenerated.OnAdd
CitationForm (MultiString) Required
Annotations:
Relational:ColumnType: jsonb
ComplexFormTypes (IList<ComplexFormType>) Required
Annotations:
Relational:ColumnType: jsonb
DeletedAt (DateTimeOffset?)
LexemeForm (MultiString) Required
Annotations:
Relational:ColumnType: jsonb
LiteralMeaning (MultiString) Required
Annotations:
Relational:ColumnType: jsonb
Note (MultiString) Required
Annotations:
Relational:ColumnType: jsonb
SnapshotId (no field, Guid?) Shadow FK Index
Navigations:
ComplexForms (IList<ComplexFormComponent>) Collection ToDependent ComplexFormComponent
Components (IList<ComplexFormComponent>) Collection ToDependent ComplexFormComponent
Senses (IList<Sense>) Collection ToDependent Sense
Keys:
Id PK
Foreign keys:
Entry {'SnapshotId'} -> ObjectSnapshot {'Id'} Unique SetNull
Indexes:
SnapshotId
|
LcmCrdt.Tests.MiniLcmTests.CreateEntryTests.CanCreateEntry_AutoFaker
System.InvalidOperationException : Order should not be provided when creating a sense
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[1].Order to be 0.0, but found 2.0.
Expected property actual.Senses[2].Order to be 0.0, but found 3.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[0].Order to be 0.0, but found 2.0.
Expected property actual.Senses[1].Order to be 0.0, but found 3.0.
Expected property actual.Senses[2].Order to be 0.0, but found 4.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[0].Order to be 0.0, but found 3.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[0].Order to be 0.0, but found 1.0.
Expected property actual.Senses[1].Order to be 0.0, but found 2.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[1].Order to be 0.0, but found 1.0.
Expected property actual.Senses[2].Order to be 0.0, but found 2.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[0].Order to be 0.0, but found 1.0.
Expected property actual.Senses[1].Order to be 0.0, but found 2.0.
Expected property actual.Senses[3].Order to be 0.0, but found 3.0.
Expected property actual.Senses[4].Order to be 0.0, but found 4.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
LcmCrdt.Tests.MiniLcmTests.UpdateEntryTests.UpdateEntry_CanReorderSenses(before: "1
Expected property actual.Senses[1].Order to be 0.0, but found 1.0.
Expected property actual.Senses[2].Order to be 0.0, but found 2.0.
Expected property actual.Senses[3].Order to be 0.0, but found 3.0.
With configuration:
- Use declared types and members
- Compare enums by value
- Compare tuples by their properties
- Compare anonymous types by their properties
- Compare records by their members
- Include non-browsable members
- Include all non-private properties
- Include all non-private fields
- Match member by name (or throw)
- Always be strict about the collection order
- Without automatic conversion.
|
Build FW Lite and run tests:
backend/FwLite/MiniLcm/SyncHelpers/WritingSystemSync.cs#L28
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
|
Build FW Lite and run tests:
backend/FwLite/MiniLcm/SyncHelpers/SenseSync.cs#L41
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
|
Build FW Lite and run tests:
backend/FwLite/FwDataMiniLcmBridge/Api/FwDataMiniLcmApi.cs#L209
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
|
Build FW Lite and run tests:
backend/FwLite/FwDataMiniLcmBridge/LcmUtils/LcmThreadedProgress.cs#L10
The event 'LcmThreadedProgress.Canceling' is never used
|
Build FW Lite and run tests:
backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateSenseProxy.cs#L121
Observe the awaitable result of this method call by awaiting it, assigning to a variable, or passing it to another method (https://github.com/Microsoft/vs-threading/blob/main/doc/analyzers/VSTHRD110.md)
|
Build FW Lite and run tests:
backend/FwLite/FwDataMiniLcmBridge/Api/UpdateProxy/UpdateEntryProxy.cs#L53
Observe the awaitable result of this method call by awaiting it, assigning to a variable, or passing it to another method (https://github.com/Microsoft/vs-threading/blob/main/doc/analyzers/VSTHRD110.md)
|
Build FW Lite and run tests:
backend/FwLite/LcmCrdt/RemoteSync/CrdtHttpSyncService.cs#L53
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
|
Build FW Lite and run tests:
backend/FwLite/LcmCrdt/HistoryService.cs#L94
The result of the expression is always 'true' since a value of type 'Guid' is never equal to 'null' of type 'Guid?'
|
Build FW Lite and run tests:
backend/FwLite/LcmCrdt/HistoryService.cs#L94
The result of the expression is always 'true' since a value of type 'Guid' is never equal to 'null' of type 'Guid?'
|
Build FW Lite and run tests:
backend/FwLite/LcmCrdt/Data/SetupCollationInterceptor.cs#L27
The variable 'e' is declared but never used
|