Skip to content

Commit 17bc37a

Browse files
committed
add unitTests for homeVM and registerVM
1 parent 45da80a commit 17bc37a

6 files changed

Lines changed: 157 additions & 12 deletions

File tree

AnimalsApp/AnimalsApp.xcodeproj/project.pbxproj

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
A463D0212858EBBB00929A3C /* AnimalsApp.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = A463D01F2858EBBB00929A3C /* AnimalsApp.xcdatamodeld */; };
1616
A463D0232858EBBD00929A3C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A463D0222858EBBD00929A3C /* Assets.xcassets */; };
1717
A463D0262858EBBD00929A3C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A463D0242858EBBD00929A3C /* LaunchScreen.storyboard */; };
18-
A463D0312858EBBD00929A3C /* AnimalsAppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D0302858EBBD00929A3C /* AnimalsAppTests.swift */; };
1918
A463D03B2858EBBD00929A3C /* AnimalsAppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D03A2858EBBD00929A3C /* AnimalsAppUITests.swift */; };
2019
A463D03D2858EBBD00929A3C /* AnimalsAppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D03C2858EBBD00929A3C /* AnimalsAppUITestsLaunchTests.swift */; };
2120
A463D04B2858F39000929A3C /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D0492858F39000929A3C /* MainTabBarController.swift */; };
@@ -36,7 +35,11 @@
3635
A463D074285A398900929A3C /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D073285A398900929A3C /* HomeViewModel.swift */; };
3736
A463D078285A5A8000929A3C /* OpenSans-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A463D077285A5A8000929A3C /* OpenSans-Regular.ttf */; };
3837
A463D07A285B8D8E00929A3C /* Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D079285B8D8D00929A3C /* Colors.swift */; };
39-
A463D07E285CF28200929A3C /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D07D285CF28200929A3C /* String.swift */; };
38+
A463D07E285CF28200929A3C /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D07D285CF28200929A3C /* StringExtensions.swift */; };
39+
A463D081285D1B4800929A3C /* SuccessWebService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D080285D1B4700929A3C /* SuccessWebService.swift */; };
40+
A463D083285D1D4500929A3C /* HomeViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D082285D1D4500929A3C /* HomeViewModelTests.swift */; };
41+
A463D085285D1F8800929A3C /* RegisterViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D084285D1F8800929A3C /* RegisterViewModelTests.swift */; };
42+
A463D08A285D273400929A3C /* StringExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A463D089285D273400929A3C /* StringExtensionTests.swift */; };
4043
/* End PBXBuildFile section */
4144

4245
/* Begin PBXContainerItemProxy section */
@@ -74,7 +77,6 @@
7477
A463D0252858EBBD00929A3C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
7578
A463D0272858EBBD00929A3C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7679
A463D02C2858EBBD00929A3C /* AnimalsAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnimalsAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
77-
A463D0302858EBBD00929A3C /* AnimalsAppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimalsAppTests.swift; sourceTree = "<group>"; };
7880
A463D0362858EBBD00929A3C /* AnimalsAppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnimalsAppUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
7981
A463D03A2858EBBD00929A3C /* AnimalsAppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimalsAppUITests.swift; sourceTree = "<group>"; };
8082
A463D03C2858EBBD00929A3C /* AnimalsAppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimalsAppUITestsLaunchTests.swift; sourceTree = "<group>"; };
@@ -96,7 +98,11 @@
9698
A463D073285A398900929A3C /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = "<group>"; };
9799
A463D077285A5A8000929A3C /* OpenSans-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "OpenSans-Regular.ttf"; sourceTree = "<group>"; };
98100
A463D079285B8D8D00929A3C /* Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Colors.swift; sourceTree = "<group>"; };
99-
A463D07D285CF28200929A3C /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = "<group>"; };
101+
A463D07D285CF28200929A3C /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = "<group>"; };
102+
A463D080285D1B4700929A3C /* SuccessWebService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessWebService.swift; sourceTree = "<group>"; };
103+
A463D082285D1D4500929A3C /* HomeViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModelTests.swift; sourceTree = "<group>"; };
104+
A463D084285D1F8800929A3C /* RegisterViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterViewModelTests.swift; sourceTree = "<group>"; };
105+
A463D089285D273400929A3C /* StringExtensionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensionTests.swift; sourceTree = "<group>"; };
100106
/* End PBXFileReference section */
101107

102108
/* Begin PBXFrameworksBuildPhase section */
@@ -165,6 +171,7 @@
165171
A463D0152858EBBB00929A3C /* AnimalsApp */ = {
166172
isa = PBXGroup;
167173
children = (
174+
A463D086285D263000929A3C /* Extensions */,
168175
A463D076285A59B500929A3C /* Resources */,
169176
A463D067285A1A4300929A3C /* Services */,
170177
A463D06028590CB700929A3C /* DesignSystem */,
@@ -183,7 +190,9 @@
183190
A463D02F2858EBBD00929A3C /* AnimalsAppTests */ = {
184191
isa = PBXGroup;
185192
children = (
186-
A463D0302858EBBD00929A3C /* AnimalsAppTests.swift */,
193+
A463D088285D270C00929A3C /* ExtensionsTests */,
194+
A463D087285D26F200929A3C /* ViewModelsTests */,
195+
A463D07F285D1B0B00929A3C /* Mocks */,
187196
);
188197
path = AnimalsAppTests;
189198
sourceTree = "<group>";
@@ -251,7 +260,6 @@
251260
children = (
252261
A463D06128590D0300929A3C /* Images.swift */,
253262
A463D079285B8D8D00929A3C /* Colors.swift */,
254-
A463D07D285CF28200929A3C /* String.swift */,
255263
);
256264
path = DesignSystem;
257265
sourceTree = "<group>";
@@ -307,6 +315,39 @@
307315
path = Resources;
308316
sourceTree = "<group>";
309317
};
318+
A463D07F285D1B0B00929A3C /* Mocks */ = {
319+
isa = PBXGroup;
320+
children = (
321+
A463D080285D1B4700929A3C /* SuccessWebService.swift */,
322+
);
323+
path = Mocks;
324+
sourceTree = "<group>";
325+
};
326+
A463D086285D263000929A3C /* Extensions */ = {
327+
isa = PBXGroup;
328+
children = (
329+
A463D07D285CF28200929A3C /* StringExtensions.swift */,
330+
);
331+
path = Extensions;
332+
sourceTree = "<group>";
333+
};
334+
A463D087285D26F200929A3C /* ViewModelsTests */ = {
335+
isa = PBXGroup;
336+
children = (
337+
A463D082285D1D4500929A3C /* HomeViewModelTests.swift */,
338+
A463D084285D1F8800929A3C /* RegisterViewModelTests.swift */,
339+
);
340+
path = ViewModelsTests;
341+
sourceTree = "<group>";
342+
};
343+
A463D088285D270C00929A3C /* ExtensionsTests */ = {
344+
isa = PBXGroup;
345+
children = (
346+
A463D089285D273400929A3C /* StringExtensionTests.swift */,
347+
);
348+
path = ExtensionsTests;
349+
sourceTree = "<group>";
350+
};
310351
A9C6C33CA0A11D6B033AAEA1 /* Frameworks */ = {
311352
isa = PBXGroup;
312353
children = (
@@ -574,7 +615,7 @@
574615
5CA996F8285A98FB00FF5D79 /* RegisterViewModel.swift in Sources */,
575616
A463D05D2858F64B00929A3C /* FavoritesViewController.swift in Sources */,
576617
A463D06D285A22D200929A3C /* DetailViewController.swift in Sources */,
577-
A463D07E285CF28200929A3C /* String.swift in Sources */,
618+
A463D07E285CF28200929A3C /* StringExtensions.swift in Sources */,
578619
A463D069285A1A5A00929A3C /* WebServices.swift in Sources */,
579620
A463D0532858F60C00929A3C /* HomeViewController.swift in Sources */,
580621
);
@@ -584,7 +625,10 @@
584625
isa = PBXSourcesBuildPhase;
585626
buildActionMask = 2147483647;
586627
files = (
587-
A463D0312858EBBD00929A3C /* AnimalsAppTests.swift in Sources */,
628+
A463D08A285D273400929A3C /* StringExtensionTests.swift in Sources */,
629+
A463D085285D1F8800929A3C /* RegisterViewModelTests.swift in Sources */,
630+
A463D081285D1B4800929A3C /* SuccessWebService.swift in Sources */,
631+
A463D083285D1D4500929A3C /* HomeViewModelTests.swift in Sources */,
588632
);
589633
runOnlyForDeploymentPostprocessing = 0;
590634
};
File renamed without changes.

AnimalsApp/AnimalsAppTests/AnimalsAppTests.swift renamed to AnimalsApp/AnimalsAppTests/ExtensionsTests/StringExtensionTests.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
//
2-
// AnimalsAppTests.swift
2+
// StringExtensionTests.swift
33
// AnimalsAppTests
44
//
5-
// Created by Laura Pinheiro Marson on 14/06/22.
5+
// Created by Laura Pinheiro Marson on 17/06/22.
66
//
77

88
import XCTest
9-
@testable import AnimalsApp
109

11-
class AnimalsAppTests: XCTestCase {
10+
class StringExtensionTests: XCTestCase {
1211

1312
override func setUpWithError() throws {
1413
// Put setup code here. This method is called before the invocation of each test method in the class.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// SuccessWebService.swift
3+
// AnimalsAppTests
4+
//
5+
// Created by Laura Pinheiro Marson on 17/06/22.
6+
//
7+
8+
import Foundation
9+
@testable import AnimalsApp
10+
11+
class SuccessWebService: WebServicesContract {
12+
var endpoint = ""
13+
var fetchedAnimals = [Animal]()
14+
var fetchAnimalsCalled = false
15+
var registerAnimalCalled = false
16+
17+
func fetchAnimals(completion: @escaping (Result<[Animal], Error>) -> ()) {
18+
19+
for n in 1...10 {
20+
fetchedAnimals.append(Animal(id: "\(n)", name: "Animal \(n)", description: "Esse é o animal de número \(n)", age: 5, species: "Espécie X", image: "link", createdAt: "Dia X", updatedAt: "Dia Y"))
21+
}
22+
fetchAnimalsCalled = true
23+
completion(.success(fetchedAnimals))
24+
}
25+
26+
func registerAnimal(with parameters: Animal, completion: @escaping (Result<Void, Error>) -> Void) {
27+
registerAnimalCalled = true
28+
completion(.success(()))
29+
}
30+
31+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
//
2+
// HomeViewModelTests.swift
3+
// AnimalsAppTests
4+
//
5+
// Created by Laura Pinheiro Marson on 17/06/22.
6+
//
7+
8+
import XCTest
9+
@testable import AnimalsApp
10+
11+
class HomeViewModelTests: XCTestCase {
12+
13+
var successWebService = SuccessWebService()
14+
15+
override func setUpWithError() throws {
16+
try super.setUpWithError()
17+
18+
successWebService = SuccessWebService()
19+
}
20+
21+
func testAnimalsCountAfterServiceCall() throws {
22+
23+
let viewModel = HomeViewModel(webServices: successWebService)
24+
25+
viewModel.getAllAnimals { }
26+
27+
XCTAssertEqual(viewModel.numberOfRows(), successWebService.fetchedAnimals.count)
28+
}
29+
30+
func testIfReturnedModelIsCorrect() throws {
31+
32+
let viewModel = HomeViewModel(webServices: successWebService)
33+
34+
viewModel.getAllAnimals { }
35+
36+
let returnedAnimal = viewModel.modelAt(6)
37+
38+
XCTAssertEqual(returnedAnimal.id, successWebService.fetchedAnimals[6].id)
39+
}
40+
41+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// RegisterViewModelTests.swift
3+
// AnimalsAppTests
4+
//
5+
// Created by Laura Pinheiro Marson on 17/06/22.
6+
//
7+
8+
import XCTest
9+
@testable import AnimalsApp
10+
11+
class RegisterViewModelTests: XCTestCase {
12+
13+
var successWebService = SuccessWebService()
14+
15+
override func setUpWithError() throws {
16+
try super.setUpWithError()
17+
18+
successWebService = SuccessWebService()
19+
}
20+
21+
func testAnimalsCountAfterServiceCall() throws {
22+
23+
let viewModel = RegisterViewModel(webServices: successWebService)
24+
25+
viewModel.registerAnimal(name: "", description: "", age: 0, species: "", image: "") { }
26+
27+
XCTAssertTrue(successWebService.registerAnimalCalled)
28+
}
29+
30+
}

0 commit comments

Comments
 (0)