Skip to content

Commit 2f848ff

Browse files
Merge pull request #31 from Ditectrev/27-add-non-cloud-tests
27 add non cloud tests
2 parents f5e5e20 + 3eefa56 commit 2f848ff

File tree

10 files changed

+328
-110
lines changed

10 files changed

+328
-110
lines changed

CloudMaster.xcodeproj/project.pbxproj

+8-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
8D26A31E2C0EE3F400E9B015 /* QuestionImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D26A31D2C0EE3F400E9B015 /* QuestionImages.swift */; };
1212
8D26A3202C0EE4A000E9B015 /* QuestionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D26A31F2C0EE4A000E9B015 /* QuestionView.swift */; };
1313
8D26A3222C101C5000E9B015 /* BookmarksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D26A3212C101C5000E9B015 /* BookmarksView.swift */; };
14+
8D3F7ABE2C202FD100D200CA /* AllCourses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D3F7ABD2C202FD100D200CA /* AllCourses.swift */; };
1415
8D8D8A862C05A23600ACC61C /* CloudMasterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8D8A852C05A23600ACC61C /* CloudMasterTests.swift */; };
1516
8D8D8A902C05A23600ACC61C /* CloudMasterUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8D8A8F2C05A23600ACC61C /* CloudMasterUITests.swift */; };
1617
8D8D8A922C05A23600ACC61C /* CloudMasterUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D8D8A912C05A23600ACC61C /* CloudMasterUITestsLaunchTests.swift */; };
@@ -69,6 +70,7 @@
6970
8D26A31D2C0EE3F400E9B015 /* QuestionImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestionImages.swift; sourceTree = "<group>"; };
7071
8D26A31F2C0EE4A000E9B015 /* QuestionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuestionView.swift; sourceTree = "<group>"; };
7172
8D26A3212C101C5000E9B015 /* BookmarksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksView.swift; sourceTree = "<group>"; };
73+
8D3F7ABD2C202FD100D200CA /* AllCourses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllCourses.swift; sourceTree = "<group>"; };
7274
8D8D8A712C05A23400ACC61C /* CloudMaster Swift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CloudMaster Swift.app"; sourceTree = BUILT_PRODUCTS_DIR; };
7375
8D8D8A812C05A23600ACC61C /* CloudMasterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CloudMasterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
7476
8D8D8A852C05A23600ACC61C /* CloudMasterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudMasterTests.swift; sourceTree = "<group>"; };
@@ -140,6 +142,7 @@
140142
8D26A31B2C0EA9C100E9B015 /* QuestionNavbar.swift */,
141143
8D26A31D2C0EE3F400E9B015 /* QuestionImages.swift */,
142144
8D26A31F2C0EE4A000E9B015 /* QuestionView.swift */,
145+
8D3F7ABD2C202FD100D200CA /* AllCourses.swift */,
143146
);
144147
path = Components;
145148
sourceTree = "<group>";
@@ -599,6 +602,7 @@
599602
8D8D8AE42C05A27800ACC61C /* QuestionLoader.swift in Sources */,
600603
8D8D8ACE2C05A27800ACC61C /* ConfirmPopup.swift in Sources */,
601604
8D8D8AE32C05A27800ACC61C /* FavoriteStorage.swift in Sources */,
605+
8D3F7ABE2C202FD100D200CA /* AllCourses.swift in Sources */,
602606
8D26A3202C0EE4A000E9B015 /* QuestionView.swift in Sources */,
603607
8D8D8AD62C05A27800ACC61C /* ExamSummaryView.swift in Sources */,
604608
8D8D8AD92C05A27800ACC61C /* HomeView.swift in Sources */,
@@ -771,7 +775,7 @@
771775
CLANG_ENABLE_MODULES = YES;
772776
CODE_SIGN_IDENTITY = "Apple Development";
773777
CODE_SIGN_STYLE = Automatic;
774-
CURRENT_PROJECT_VERSION = 3;
778+
CURRENT_PROJECT_VERSION = 4;
775779
DEVELOPMENT_ASSET_PATHS = "\"CloudMaster/Preview Content\"";
776780
DEVELOPMENT_TEAM = 9D3QHQ7CMS;
777781
ENABLE_PREVIEWS = YES;
@@ -786,7 +790,7 @@
786790
"$(inherited)",
787791
"@executable_path/Frameworks",
788792
);
789-
MARKETING_VERSION = 1.0.3;
793+
MARKETING_VERSION = 1.0.4;
790794
PRODUCT_BUNDLE_IDENTIFIER = com.ditectrev.cloudmasterswift;
791795
PRODUCT_NAME = "CloudMaster Swift";
792796
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -806,7 +810,7 @@
806810
CLANG_ENABLE_MODULES = YES;
807811
CODE_SIGN_IDENTITY = "Apple Development";
808812
CODE_SIGN_STYLE = Automatic;
809-
CURRENT_PROJECT_VERSION = 3;
813+
CURRENT_PROJECT_VERSION = 4;
810814
DEVELOPMENT_ASSET_PATHS = "\"CloudMaster/Preview Content\"";
811815
DEVELOPMENT_TEAM = 9D3QHQ7CMS;
812816
ENABLE_PREVIEWS = YES;
@@ -821,7 +825,7 @@
821825
"$(inherited)",
822826
"@executable_path/Frameworks",
823827
);
824-
MARKETING_VERSION = 1.0.3;
828+
MARKETING_VERSION = 1.0.4;
825829
PRODUCT_BUNDLE_IDENTIFIER = com.ditectrev.cloudmasterswift;
826830
PRODUCT_NAME = "CloudMaster Swift";
827831
PROVISIONING_PROFILE_SPECIFIER = "";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "seal.png",
5+
"idiom" : "universal",
6+
"scale" : "1x"
7+
},
8+
{
9+
"idiom" : "universal",
10+
"scale" : "2x"
11+
},
12+
{
13+
"idiom" : "universal",
14+
"scale" : "3x"
15+
}
16+
],
17+
"info" : {
18+
"author" : "xcode",
19+
"version" : 1
20+
}
21+
}
Loading

CloudMaster/Constants/Courses.swift

+169-17
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ enum CourseCompany: String, Codable, Hashable, CaseIterable {
44
case aws = "Amazon Web Services"
55
case azure = "Microsoft Azure"
66
case gcp = "Google Cloud Platform"
7+
case other = "Others"
78
}
89

910

@@ -62,7 +63,7 @@ struct Course: Codable, Hashable, Identifiable {
6263
extension Course {
6364
static let allCourses = [
6465
Course(
65-
fullName: "AWS Certified Advanced Networking Specialty",
66+
fullName: "Certified Advanced Networking Specialty",
6667
shortName: "ANS-C01",
6768
description: "Validates expertise in designing and maintaining AWS network architecture, including hybrid IT, routing, and security.",
6869
company: .aws,
@@ -77,22 +78,7 @@ extension Course {
7778
lastUpdate: nil
7879
),
7980
Course(
80-
fullName: "AWS Certified Solutions Architect Associate",
81-
shortName: "SAA-C03",
82-
description: "Covers designing and deploying scalable, highly available, and fault-tolerant systems on AWS.",
83-
company: .aws,
84-
repositoryURL: "https://github.com/Ditectrev/AWS-Certified-Solutions-Architect-Associate-SAA-C03-Practice-Tests-Exams-Questions-Answers",
85-
questionURL: "https://raw.githubusercontent.com/Ditectrev/AWS-Certified-Solutions-Architect-Associate-SAA-C03-Practice-Tests-Exams-Questions-Answers/main/README.md",
86-
url: "https://aws.amazon.com/certification/certified-solutions-architect-associate/",
87-
exam: Exam(
88-
quick: ExamDetail(time: 40, questionCount: 20),
89-
intermediate: ExamDetail(time: 84, questionCount: 49),
90-
real: ExamDetail(time: 120, questionCount: 65)
91-
),
92-
lastUpdate: nil
93-
),
94-
Course(
95-
fullName: "AWS Certified Cloud Practitioner",
81+
fullName: "Certified Cloud Practitioner",
9682
shortName: "CLF-C02",
9783
description: "Provides a foundational understanding of AWS cloud concepts, services, security, architecture, pricing, and support.",
9884
company: .aws,
@@ -106,6 +92,97 @@ extension Course {
10692
),
10793
lastUpdate: nil
10894
),
95+
Course(
96+
fullName: "Certified Data Analytics",
97+
shortName: "DAS-C01",
98+
description: "Validates expertise in designing, building, securing, and maintaining analytics solutions on AWS, demonstrating advanced skills in using AWS data lakes, analytics services, and visualization tools.",
99+
company: .aws,
100+
repositoryURL: "https://github.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Data-Analytics-DAS-C01-Practice-Tests-Exams-Question",
101+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Data-Analytics-DAS-C01-Practice-Tests-Exams-Question/main/README.md",
102+
url: "https://aws.amazon.com/training/learn-about/data-analytics/",
103+
exam: Exam(
104+
quick: ExamDetail(time: 57, questionCount: 22),
105+
intermediate: ExamDetail(time: 119, questionCount: 46),
106+
real: ExamDetail(time: 170, questionCount: 65)
107+
),
108+
lastUpdate: nil
109+
),
110+
Course(
111+
fullName: "Certified Database Specialty",
112+
shortName: "DBS-C01",
113+
description: "Validates expertise in designing, managing, and securing AWS database solutions, demonstrating advanced knowledge of various database services and architectures on the AWS platform.",
114+
company: .aws,
115+
repositoryURL:"https://github.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Database-DBS-C01-Practice-Tests-Exams-Questions-Answers",
116+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Database-DBS-C01-Practice-Tests-Exams-Questions-Answers/main/README.md",
117+
url: "https://aws.amazon.com/training/classroom/exam-readiness-aws-certified-database-specialty/",
118+
exam: Exam(
119+
quick: ExamDetail(time: 57, questionCount: 22),
120+
intermediate: ExamDetail(time: 119, questionCount: 46),
121+
real: ExamDetail(time: 170, questionCount: 65)
122+
),
123+
lastUpdate: nil
124+
),
125+
Course(
126+
fullName: "Certified Developer Associate",
127+
shortName: "DVA-C02",
128+
description: "Validates proficiency in developing, deploying, and debugging applications on the AWS cloud, demonstrating a strong understanding of core AWS services, architecture, and best practices.",
129+
company: .aws,
130+
repositoryURL: "https://github.com/Ditectrev/Amazon-Web-Services-AWS-Developer-Associate-DVA-C02-Practice-Tests-Exams-Questions-Answers",
131+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Amazon-Web-Services-AWS-Developer-Associate-DVA-C02-Practice-Tests-Exams-Questions-Answers/main/README.md",
132+
url: "https://aws.amazon.com/certification/certified-developer-associate/",
133+
exam: Exam(
134+
quick: ExamDetail(time: 57, questionCount: 22),
135+
intermediate: ExamDetail(time: 119, questionCount: 46),
136+
real: ExamDetail(time: 170, questionCount: 65)
137+
),
138+
lastUpdate: nil
139+
),
140+
Course(
141+
fullName: "Certified Machine Learning Specialty",
142+
shortName: "MLS-C01",
143+
description: "Validates proficiency in developing, deploying, and debugging applications on the AWS cloud, demonstrating a strong understanding of core AWS services, architecture, and best practices.",
144+
company: .aws,
145+
repositoryURL: "https://github.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Machine-Learning-MLS-C01-Practice-Tests-Exams-Question",
146+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Machine-Learning-MLS-C01-Practice-Tests-Exams-Question/main/README.md",
147+
url: "https://aws.amazon.com/certification/certified-machine-learning-specialty/",
148+
exam: Exam(
149+
quick: ExamDetail(time: 57, questionCount: 22),
150+
intermediate: ExamDetail(time: 119, questionCount: 46),
151+
real: ExamDetail(time: 170, questionCount: 65)
152+
),
153+
lastUpdate: nil
154+
),
155+
156+
Course(
157+
fullName: "Certified Security Specialty",
158+
shortName: "SCS-C02",
159+
description: "Validates advanced expertise in securing and managing AWS environments, demonstrating comprehensive knowledge of security best practices, compliance, identity and access management, incident response, and data protection on the AWS platform.",
160+
company: .aws,
161+
repositoryURL: "https://github.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Security-SCS-C02-Practice-Tests-Exams-Questions-Answers",
162+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Amazon-Web-Services-Certified-AWS-Certified-Security-SCS-C02-Practice-Tests-Exams-Questions-Answers/main/README.md",
163+
url: "https://aws.amazon.com/certification/certified-security-specialty/",
164+
exam: Exam(
165+
quick: ExamDetail(time: 57, questionCount: 22),
166+
intermediate: ExamDetail(time: 119, questionCount: 46),
167+
real: ExamDetail(time: 170, questionCount: 65)
168+
),
169+
lastUpdate: nil
170+
),
171+
Course(
172+
fullName: "Certified Solutions Architect Associate",
173+
shortName: "SAA-C03",
174+
description: "Covers designing and deploying scalable, highly available, and fault-tolerant systems on AWS.",
175+
company: .aws,
176+
repositoryURL: "https://github.com/Ditectrev/AWS-Certified-Solutions-Architect-Associate-SAA-C03-Practice-Tests-Exams-Questions-Answers",
177+
questionURL: "https://raw.githubusercontent.com/Ditectrev/AWS-Certified-Solutions-Architect-Associate-SAA-C03-Practice-Tests-Exams-Questions-Answers/main/README.md",
178+
url: "https://aws.amazon.com/certification/certified-solutions-architect-associate/",
179+
exam: Exam(
180+
quick: ExamDetail(time: 40, questionCount: 20),
181+
intermediate: ExamDetail(time: 84, questionCount: 49),
182+
real: ExamDetail(time: 120, questionCount: 65)
183+
),
184+
lastUpdate: nil
185+
),
109186
Course(
110187
fullName: "Azure Fundamentals",
111188
shortName: "AZ-900",
@@ -224,6 +301,81 @@ extension Course {
224301
real: ExamDetail(time: 120, questionCount: 60)
225302
),
226303
lastUpdate: nil
304+
),
305+
Course(
306+
fullName: "IT Service Management 4",
307+
shortName: "ITL-4",
308+
description: "Entry-level certification that demonstrates an understanding of the core concepts and principles of IT Service Management based on the ITIL 4 framework.",
309+
company: .other,
310+
repositoryURL: "https://github.com/Ditectrev/ITIL-4-Foundation-IT-Service-Management-Practice-Tests-Exams-Questions-Answers",
311+
questionURL: "https://raw.githubusercontent.com/Ditectrev/ITIL-4-Foundation-IT-Service-Management-Practice-Tests-Exams-Questions-Answers/main/README.md",
312+
url: "https://www.axelos.com/certifications/itil-service-management/",
313+
exam: Exam(
314+
quick: ExamDetail(time: 40, questionCount: 20),
315+
intermediate: ExamDetail(time: 84, questionCount: 42),
316+
real: ExamDetail(time: 120, questionCount: 60)
317+
),
318+
lastUpdate: nil
319+
),
320+
Course(
321+
fullName: "Agile Foundation",
322+
shortName: "Prince-2",
323+
description: "The PRINCE2 Agile Foundation Certificate validates an individual’s knowledge of how to apply the PRINCE2 project management methodology in an agile environment.",
324+
company: .other,
325+
repositoryURL:"https://github.com/Ditectrev/PRINCE2-Agile-Foundation-Tests-Exams-Questions-Answers",
326+
questionURL: "https://raw.githubusercontent.com/Ditectrev/PRINCE2-Agile-Foundation-Tests-Exams-Questions-Answers/main/README.md",
327+
url: "https://www.axelos.com/certifications/propath/prince2-agile-project-management/prince2-agile-foundation",
328+
exam: Exam(
329+
quick: ExamDetail(time: 40, questionCount: 20),
330+
intermediate: ExamDetail(time: 84, questionCount: 42),
331+
real: ExamDetail(time: 120, questionCount: 60)
332+
),
333+
lastUpdate: nil
334+
),
335+
Course(
336+
fullName: "Scrum Developer I",
337+
shortName: "PSD-1",
338+
description: "Verifies a developer’s understanding of Scrum principles and their ability to work effectively within a Scrum team, focusing on collaborative and incremental software development practices.",
339+
company: .other,
340+
repositoryURL: "https://github.com/Ditectrev/Professional-Scrum-Developer-I-PSD-I-Practice-Tests-Exams-Questions-Answers",
341+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Professional-Scrum-Developer-I-PSD-I-Practice-Tests-Exams-Questions-Answers/master/README.md",
342+
url: "https://www.scrum.org/assessments/professional-scrum-developer-certification",
343+
exam: Exam(
344+
quick: ExamDetail(time: 40, questionCount: 20),
345+
intermediate: ExamDetail(time: 84, questionCount: 42),
346+
real: ExamDetail(time: 120, questionCount: 60)
347+
),
348+
lastUpdate: nil
349+
),
350+
Course(
351+
fullName: "Scrum Master I",
352+
shortName: "SM-1",
353+
description: "Demonstrates advanced proficiency in facilitating and leading Scrum teams, emphasizing the application of Scrum practices, principles, and techniques to maximize team productivity and efficiency.",
354+
company: .other,
355+
repositoryURL: "https://github.com/Ditectrev/Professional-Scrum-Master-I-PSM-I-Practice-Tests-Exams-Questions-Answers",
356+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Professional-Scrum-Master-I-PSM-I-Practice-Tests-Exams-Questions-Answers/main/README.md",
357+
url: "https://www.scrum.org/assessments/professional-scrum-master-i-certification",
358+
exam: Exam(
359+
quick: ExamDetail(time: 40, questionCount: 20),
360+
intermediate: ExamDetail(time: 84, questionCount: 42),
361+
real: ExamDetail(time: 120, questionCount: 60)
362+
),
363+
lastUpdate: nil
364+
),
365+
Course(
366+
fullName: "Scrum Master II",
367+
shortName: "SM-2",
368+
description: "Demonstrates advanced proficiency in facilitating and leading Scrum teams, emphasizing the application of Scrum practices, principles, and techniques to maximize team productivity and efficiency.",
369+
company: .other,
370+
repositoryURL:"https://github.com/Ditectrev/Professional-Scrum-Master-II-PSM-II-Practice-Tests-Exams-Questions-Answers",
371+
questionURL: "https://raw.githubusercontent.com/Ditectrev/Professional-Scrum-Master-II-PSM-II-Practice-Tests-Exams-Questions-Answers/main/README.md",
372+
url: "https://www.scrum.org/assessments/professional-scrum-master-ii-certification",
373+
exam: Exam(
374+
quick: ExamDetail(time: 40, questionCount: 20),
375+
intermediate: ExamDetail(time: 84, questionCount: 42),
376+
real: ExamDetail(time: 120, questionCount: 60)
377+
),
378+
lastUpdate: nil
227379
)
228380
]
229381
}

CloudMaster/Features/Courses/Views/CoursesView.swift

+1-14
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,7 @@ struct CoursesView: View {
88

99
var body: some View {
1010
VStack {
11-
SearchBar(text: $searchText)
12-
.padding()
13-
14-
List(Course.allCourses.filter({ searchText.isEmpty ? true : $0.fullName.lowercased().contains(searchText.lowercased()) })) { course in
15-
CourseRow(course: course, isBookmarked: favorites.contains(course)) {
16-
if favorites.contains(course) {
17-
favorites.remove(course)
18-
} else {
19-
favorites.insert(course)
20-
}
21-
FavoritesStorage.shared.saveFavorites(favorites)
22-
}
23-
}
24-
.listStyle(PlainListStyle())
11+
AllCourses(favorites: $favorites)
2512
}
2613
.navigationBarTitle("All Courses", displayMode: .inline)
2714
.navigationBarItems(trailing: updateButton)

0 commit comments

Comments
 (0)