Skip to content

Commit f78c4fa

Browse files
authored
Merge pull request #258 from TaskarCenterAtUW/feature-unit-test-cases-for-undo-and-undo-conflict-merge
implemented unit test cases for undo functionality
2 parents 6474c99 + adaceaf commit f78c4fa

File tree

3 files changed

+511
-30
lines changed

3 files changed

+511
-30
lines changed

GoInfoGame/GoInfoGame.xcodeproj/project.pbxproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@
179179
A4E711B02B59011000C9DE08 /* StepsInclineForm.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4E711AF2B59011000C9DE08 /* StepsInclineForm.swift */; };
180180
B0CCB98C2B8626AE00AA73DE /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0CCB98B2B8626AE00AA73DE /* ProfileView.swift */; };
181181
B0CCB98E2B8626C600AA73DE /* ProfileViewVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0CCB98D2B8626C600AA73DE /* ProfileViewVM.swift */; };
182+
C77EEBCF2DE59D3200494CB4 /* UndoMerge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77EEBCE2DE59D3200494CB4 /* UndoMerge.swift */; };
182183
C7ED070F2D70E2EC001FFFE2 /* TokenRefresher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7ED070E2D70E2EC001FFFE2 /* TokenRefresher.swift */; };
183184
CFECB318461BB876B1621890 /* Pods_osmapi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4F37DA661B22FA87DF8282F /* Pods_osmapi.framework */; };
184185
FA18CAE22CC7CD89008247F2 /* KartaviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA18CAE12CC7CD89008247F2 /* KartaviewViewModel.swift */; };
@@ -504,6 +505,7 @@
504505
B0CCB98B2B8626AE00AA73DE /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
505506
B0CCB98D2B8626C600AA73DE /* ProfileViewVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewVM.swift; sourceTree = "<group>"; };
506507
C4F37DA661B22FA87DF8282F /* Pods_osmapi.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_osmapi.framework; sourceTree = BUILT_PRODUCTS_DIR; };
508+
C77EEBCE2DE59D3200494CB4 /* UndoMerge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UndoMerge.swift; sourceTree = "<group>"; };
507509
C7ED070E2D70E2EC001FFFE2 /* TokenRefresher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenRefresher.swift; sourceTree = "<group>"; };
508510
C96303080D26026265099E0E /* Pods-GoInfoGame.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GoInfoGame.release.xcconfig"; path = "Target Support Files/Pods-GoInfoGame/Pods-GoInfoGame.release.xcconfig"; sourceTree = "<group>"; };
509511
D76D8E22AC705A38AFEA78B1 /* Pods-GoInfoGame-GoInfoGameUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GoInfoGame-GoInfoGameUITests.debug.xcconfig"; path = "Target Support Files/Pods-GoInfoGame-GoInfoGameUITests/Pods-GoInfoGame-GoInfoGameUITests.debug.xcconfig"; sourceTree = "<group>"; };
@@ -1493,6 +1495,7 @@
14931495
FAD5C5092AFCBE720040C61A /* GoInfoGameTests.swift */,
14941496
A40E72632B5CD65000328848 /* OverpassRequestManagerTests.swift */,
14951497
A444AC8B2B5E934B006C74F7 /* UserFlowTests.swift */,
1498+
C77EEBCE2DE59D3200494CB4 /* UndoMerge.swift */,
14961499
A48037322BBA8D00007EE7E4 /* WorkspacesApiManagerTests.swift */,
14971500
);
14981501
path = GoInfoGameTests;
@@ -2262,6 +2265,7 @@
22622265
FA87A8192B6B01A4000A6BEA /* HandRailTests.swift in Sources */,
22632266
FA87A8172B6AC885000A6BEA /* StepsInclineTests.swift in Sources */,
22642267
188843AD2B5FA2DF0008DCF8 /* TactilePavingStepsTests.swift in Sources */,
2268+
C77EEBCF2DE59D3200494CB4 /* UndoMerge.swift in Sources */,
22652269
A4834A442B679CE000D4F0AA /* DatasyncManagerTests.swift in Sources */,
22662270
A40E72642B5CD65000328848 /* OverpassRequestManagerTests.swift in Sources */,
22672271
A444AC8C2B5E934B006C74F7 /* UserFlowTests.swift in Sources */,
@@ -2804,7 +2808,7 @@
28042808
BUNDLE_LOADER = "$(TEST_HOST)";
28052809
CODE_SIGN_STYLE = Automatic;
28062810
CURRENT_PROJECT_VERSION = 1;
2807-
DEVELOPMENT_TEAM = NPCMG529DV;
2811+
DEVELOPMENT_TEAM = G8MQVE5WWW;
28082812
GENERATE_INFOPLIST_FILE = YES;
28092813
IPHONEOS_DEPLOYMENT_TARGET = 16.1;
28102814
MARKETING_VERSION = 1.0;
Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
//
2+
// UndoMerge.swift
3+
// GoInfoGameTests
4+
//
5+
// Created by Prashamsa on 08/05/25.
6+
//
7+
8+
import XCTest
9+
@testable import GoInfoGame
10+
11+
final class UndoMerge: XCTestCase {
12+
13+
override func setUpWithError() throws {
14+
// Put setup code here. This method is called before the invocation of each test method in the class.
15+
}
16+
17+
override func tearDownWithError() throws {
18+
// Put teardown code here. This method is called after the invocation of each test method in the class.
19+
}
20+
21+
func testUndoMerge1() {
22+
// payload tags initial
23+
let originalTags: [String: String] = ["a": "1",
24+
"b": "2",
25+
"c": "3"]
26+
// tag modified in the operation
27+
let edited: [String: String] = ["d":"1"]
28+
29+
// Tags received from server for the element
30+
let serverTags: [String: String] = ["a": "1",
31+
"b": "2"]
32+
33+
let expectedTagsAfterMerge: [String: String] = ["a": "1",
34+
"b": "2"]
35+
36+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
37+
XCTAssertEqual(resultTags, expectedTagsAfterMerge)
38+
}
39+
40+
func testUndoMerge2() {
41+
let originalTags: [String: String] = ["a": "1",
42+
"b": "2",
43+
"c": "3"]
44+
45+
let edited: [String: String] = ["d":"1"]
46+
47+
let serverTags: [String: String] = ["a": "2",
48+
"b": "2",
49+
"c": "3"]
50+
51+
let expectedTags: [String: String] = ["a": "2",
52+
"b": "2",
53+
"c": "3"]
54+
55+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
56+
XCTAssertEqual(resultTags, expectedTags)
57+
}
58+
59+
func testUndoMerge3() {
60+
let originalTags: [String: String] = ["a": "1",
61+
"b": "2",
62+
"c": "3"]
63+
64+
let edited: [String: String] = ["d":"1"]
65+
66+
let serverTags: [String: String] = ["a": "2",
67+
"b": "2",
68+
"c": "3",
69+
"d" :"2"]
70+
71+
let expectedTags: [String: String]? = nil
72+
// ["a": "2",
73+
// "b": "2",
74+
// "c": "3",
75+
// "d" :"2"]
76+
//
77+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
78+
XCTAssertEqual(resultTags, expectedTags)
79+
}
80+
81+
func testUndoMerge4() {
82+
let originalTags: [String: String] = ["a": "1",
83+
"b": "2",
84+
"c": "3"]
85+
86+
let edited: [String: String] = ["d":"1"]
87+
88+
let serverTags: [String: String] = ["a": "1",
89+
"b": "2",
90+
"c": "3",
91+
"d" :"1"]
92+
93+
let expectedTags: [String: String] = ["a": "1",
94+
"b": "2",
95+
"c": "3"]
96+
97+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
98+
XCTAssertEqual(resultTags, expectedTags)
99+
}
100+
101+
func testUndoMerge5() {
102+
let originalTags: [String: String] = ["a": "1",
103+
"b": "2",
104+
"c": "3"]
105+
106+
let edited: [String: String] = ["d":"1"]
107+
108+
let serverTags: [String: String] = ["b": "2",
109+
"c": "3"]
110+
111+
let expectedTags: [String: String] = ["b": "2",
112+
"c": "3"]
113+
114+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
115+
XCTAssertEqual(resultTags, expectedTags)
116+
}
117+
118+
func testUndoMerge6() {
119+
let originalTags: [String: String] = ["a": "1",
120+
"b": "2",
121+
"c": "3"]
122+
123+
let edited: [String: String] = ["d":"1"]
124+
125+
let serverTags: [String: String] = ["b": "3",
126+
"c": "3"]
127+
128+
let expectedTags: [String: String] = ["b": "3",
129+
"c": "3"]
130+
131+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
132+
XCTAssertEqual(resultTags, expectedTags)
133+
}
134+
135+
func testUndoMerge7() {
136+
let originalTags: [String: String] = ["a": "1",
137+
"b": "2",
138+
"c": "3"]
139+
140+
let edited: [String: String] = ["d":"1"]
141+
142+
let serverTags: [String: String] = ["a": "1",
143+
"b": "2",
144+
"c": "3",
145+
"d" :"1",
146+
"e" : "1"]
147+
148+
let expectedTags: [String: String] = ["a": "1",
149+
"b": "2",
150+
"c": "3",
151+
"e" : "1"]
152+
153+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
154+
XCTAssertEqual(resultTags, expectedTags)
155+
}
156+
157+
// Edit cases
158+
159+
func testUndoMerge8() {
160+
let originalTags: [String: String] = ["a": "1",
161+
"b": "2",
162+
"c": "3"]
163+
164+
let edited: [String: String] = ["a":"2"]
165+
166+
let serverTags: [String: String] = ["a": "2",
167+
"b": "2"]
168+
169+
let expectedTags: [String: String] = ["a": "1",
170+
"b": "2"]
171+
172+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
173+
XCTAssertEqual(resultTags, expectedTags)
174+
}
175+
176+
func testUndoMerge9() {
177+
let originalTags: [String: String] = ["a": "1",
178+
"b": "2",
179+
"c": "3"]
180+
181+
let edited: [String: String] = ["a":"2"]
182+
183+
let serverTags: [String: String] = ["a": "3",
184+
"b": "2",
185+
"c": "3"]
186+
187+
let expectedTags: [String: String]? = nil
188+
// ["a": "3",
189+
// "b": "2",
190+
// "c": "3"]
191+
192+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
193+
XCTAssertEqual(resultTags, expectedTags)
194+
}
195+
196+
func testUndoMerge10() {
197+
let originalTags: [String: String] = ["a": "1",
198+
"b": "2",
199+
"c": "3"]
200+
201+
let edited: [String: String] = ["a":"2"]
202+
203+
let serverTags: [String: String] = ["a": "2",
204+
"b": "2",
205+
"c": "3",
206+
"d" : "4"]
207+
208+
let expectedTags: [String: String] = ["a": "1",
209+
"b": "2",
210+
"c": "3",
211+
"d" : "4"]
212+
213+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
214+
XCTAssertEqual(resultTags, expectedTags)
215+
}
216+
217+
func testUndoMerge11() {
218+
let originalTags: [String: String] = ["a": "1",
219+
"b": "2",
220+
"c": "3"]
221+
222+
let edited: [String: String] = ["a":"2"]
223+
224+
let serverTags: [String: String] = ["a": "1",
225+
"b": "2",
226+
"c": "3"]
227+
228+
let expectedTags: [String: String] = ["a": "1",
229+
"b": "2",
230+
"c": "3"]
231+
232+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
233+
XCTAssertEqual(resultTags, expectedTags)
234+
}
235+
236+
func testUndoMerge12() {
237+
let originalTags: [String: String] = ["a": "1",
238+
"b": "2",
239+
"c": "3"]
240+
241+
let edited: [String: String] = ["a":"2"]
242+
243+
let serverTags: [String: String] = ["b": "2",
244+
"c": "3"]
245+
246+
let expectedTags: [String: String]? = nil
247+
// ["b": "2",
248+
// "c": "3"]
249+
250+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
251+
XCTAssertEqual(resultTags, expectedTags)
252+
}
253+
254+
func testUndoMerge13() {
255+
let originalTags: [String: String] = ["a": "1",
256+
"b": "2",
257+
"c": "3"]
258+
259+
let edited: [String: String] = ["a":"2"]
260+
261+
let serverTags: [String: String] = ["b": "3",
262+
"c": "3"]
263+
264+
let expectedTags: [String: String]? = nil
265+
// ["b": "3",
266+
// "c": "3"]
267+
268+
let resultTags = mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
269+
XCTAssertEqual(resultTags, expectedTags)
270+
}
271+
272+
func mergeTagsForUndo(originalTags: [String : String], edited: [String : String], serverTags: [String : String]) -> [String : String]? {
273+
return DatasyncManager.shared.mergeTagsForUndo(originalTags: originalTags, edited: edited, serverTags: serverTags)
274+
}
275+
}

0 commit comments

Comments
 (0)