Skip to content

Commit 1453a8a

Browse files
authored
fix: CoreData tracking entity name retrieval (#2329)
* fix: CoreData tracking entity name retrieval
1 parent 64f4e63 commit 1453a8a

File tree

5 files changed

+36
-27
lines changed

5 files changed

+36
-27
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
- Enable bitcode (#2307)
2626
- Fix moving app state to previous app state (#2321)
27+
- Use CoreData entity names instead of "NSManagedObject" (#2329)
2728

2829
## 7.28.0
2930

Sources/Sentry/SentryCoreDataTracker.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ - (NSString *)descriptionForOperations:
147147
{
148148
NSMutableDictionary<NSString *, NSNumber *> *result = [NSMutableDictionary new];
149149

150-
for (id item in entities) {
151-
NSString *cl = NSStringFromClass([item class]);
150+
for (NSManagedObject *item in entities) {
151+
NSString *cl = item.entity.name;
152152
NSNumber *count = result[cl];
153153
result[cl] = [NSNumber numberWithInt:count.intValue + 1];
154154
}

Tests/SentryTests/Integrations/Performance/CoreData/SentryCoreDataTrackerTest.swift

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,18 @@ class SentryCoreDataTrackerTests: XCTestCase {
99
func getSut() -> SentryCoreDataTracker {
1010
return SentryCoreDataTracker()
1111
}
12-
12+
1313
func testEntity() -> TestEntity {
1414
let entityDescription = NSEntityDescription()
1515
entityDescription.name = "TestEntity"
1616
return TestEntity(entity: entityDescription, insertInto: context)
1717
}
18+
19+
func secondTestEntity() -> SecondTestEntity {
20+
let entityDescription = NSEntityDescription()
21+
entityDescription.name = "SecondTestEntity"
22+
return SecondTestEntity(entity: entityDescription, insertInto: context)
23+
}
1824
}
1925

2026
private var fixture: Fixture!
@@ -72,68 +78,68 @@ class SentryCoreDataTrackerTests: XCTestCase {
7278
}
7379

7480
func test_Save_1Insert_1Entity() {
75-
fixture.context.inserted = [TestEntity()]
81+
fixture.context.inserted = [fixture.testEntity()]
7682
assertSave("INSERTED 1 'TestEntity'")
7783
}
7884

7985
func test_Save_2Insert_1Entity() {
80-
fixture.context.inserted = [TestEntity(), TestEntity()]
86+
fixture.context.inserted = [fixture.testEntity(), fixture.testEntity()]
8187
assertSave("INSERTED 2 'TestEntity'")
8288
}
8389

8490
func test_Save_2Insert_2Entity() {
85-
fixture.context.inserted = [TestEntity(), SecondTestEntity()]
91+
fixture.context.inserted = [fixture.testEntity(), fixture.secondTestEntity()]
8692
assertSave("INSERTED 2 items")
8793
}
8894

8995
func test_Save_1Update_1Entity() {
90-
fixture.context.updated = [TestEntity()]
96+
fixture.context.updated = [fixture.testEntity()]
9197
assertSave("UPDATED 1 'TestEntity'")
9298
}
9399

94100
func test_Save_2Update_1Entity() {
95-
fixture.context.updated = [TestEntity(), TestEntity()]
101+
fixture.context.updated = [fixture.testEntity(), fixture.testEntity()]
96102
assertSave("UPDATED 2 'TestEntity'")
97103
}
98104

99105
func test_Save_2Update_2Entity() {
100-
fixture.context.updated = [TestEntity(), SecondTestEntity()]
106+
fixture.context.updated = [fixture.testEntity(), fixture.secondTestEntity()]
101107
assertSave("UPDATED 2 items")
102108
}
103109

104110
func test_Save_1Delete_1Entity() {
105-
fixture.context.deleted = [TestEntity()]
111+
fixture.context.deleted = [fixture.testEntity()]
106112
assertSave("DELETED 1 'TestEntity'")
107113
}
108114

109115
func test_Save_2Delete_1Entity() {
110-
fixture.context.deleted = [TestEntity(), TestEntity()]
116+
fixture.context.deleted = [fixture.testEntity(), fixture.testEntity()]
111117
assertSave("DELETED 2 'TestEntity'")
112118
}
113119

114120
func test_Save_2Delete_2Entity() {
115-
fixture.context.deleted = [TestEntity(), SecondTestEntity()]
121+
fixture.context.deleted = [fixture.testEntity(), fixture.secondTestEntity()]
116122
assertSave("DELETED 2 items")
117123
}
118124

119125
func test_Save_Insert_Update_Delete_1Entity() {
120-
fixture.context.inserted = [TestEntity()]
121-
fixture.context.updated = [TestEntity()]
122-
fixture.context.deleted = [TestEntity()]
126+
fixture.context.inserted = [fixture.testEntity()]
127+
fixture.context.updated = [fixture.testEntity()]
128+
fixture.context.deleted = [fixture.testEntity()]
123129
assertSave("INSERTED 1 'TestEntity', UPDATED 1 'TestEntity', DELETED 1 'TestEntity'")
124130
}
125131

126132
func test_Save_Insert_Update_Delete_2Entity() {
127-
fixture.context.inserted = [TestEntity(), SecondTestEntity()]
128-
fixture.context.updated = [TestEntity(), SecondTestEntity()]
129-
fixture.context.deleted = [TestEntity(), SecondTestEntity()]
133+
fixture.context.inserted = [fixture.testEntity(), fixture.secondTestEntity()]
134+
fixture.context.updated = [fixture.testEntity(), fixture.secondTestEntity()]
135+
fixture.context.deleted = [fixture.testEntity(), fixture.secondTestEntity()]
130136
assertSave("INSERTED 2 items, UPDATED 2 items, DELETED 2 items")
131137
}
132138

133139
func test_Operation_InData() {
134-
fixture.context.inserted = [TestEntity(), TestEntity(), SecondTestEntity()]
135-
fixture.context.updated = [TestEntity(), SecondTestEntity(), SecondTestEntity()]
136-
fixture.context.deleted = [TestEntity(), TestEntity(), SecondTestEntity(), SecondTestEntity(), SecondTestEntity()]
140+
fixture.context.inserted = [fixture.testEntity(), fixture.testEntity(), fixture.secondTestEntity()]
141+
fixture.context.updated = [fixture.testEntity(), fixture.secondTestEntity(), fixture.secondTestEntity()]
142+
fixture.context.deleted = [fixture.testEntity(), fixture.testEntity(), fixture.secondTestEntity(), fixture.secondTestEntity(), fixture.secondTestEntity()]
137143

138144
let sut = fixture.getSut()
139145

Tests/SentryTests/Integrations/Performance/CoreData/SentryCoreDataTrackingIntegrationTest.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@ class SentryCoreDataTrackingIntegrationTests: XCTestCase {
1717
func getSut() -> SentryCoreDataTrackingIntegration {
1818
return SentryCoreDataTrackingIntegration()
1919
}
20-
21-
func testEntity() -> TestEntity {
22-
let entityDescription = NSEntityDescription()
23-
entityDescription.name = "TestEntity"
24-
return TestEntity(entity: entityDescription, insertInto: nil)
25-
}
2620
}
2721

2822
private var fixture: Fixture!

Tests/SentryTests/Integrations/Performance/CoreData/TestCoreDataStack.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,20 @@ import Foundation
55
public class TestEntity: NSManagedObject {
66
var field1: String?
77
var field2: Int?
8+
9+
public override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
10+
super.init(entity: entity, insertInto: context)
11+
}
812
}
913

1014
@objc(SecondTestEntity)
1115
public class SecondTestEntity: NSManagedObject {
1216
var field1: String?
1317
var field2: Int?
18+
19+
public override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
20+
super.init(entity: entity, insertInto: context)
21+
}
1422
}
1523

1624
class TestCoreDataStack {

0 commit comments

Comments
 (0)