Skip to content

Commit 6fe97d3

Browse files
feat: release a2-english exam (freeCodeCamp#63136)
1 parent c722fcd commit 6fe97d3

File tree

8 files changed

+80
-29
lines changed

8 files changed

+80
-29
lines changed

api/src/routes/protected/certificate.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ describe('certificate routes', () => {
3838
data: {
3939
completedChallenges: [],
4040
name: 'fcc',
41+
isA2EnglishCert: false,
4142
isRespWebDesignCert: false,
4243
isJsAlgoDataStructCert: false,
4344
isFrontEndLibsCert: false,
@@ -135,6 +136,7 @@ describe('certificate routes', () => {
135136
},
136137
isCertMap: {
137138
is2018DataVisCert: false,
139+
isA2EnglishCert: false,
138140
isApisMicroservicesCert: false,
139141
isBackEndCert: false,
140142
isCollegeAlgebraPyCertV8: false,
@@ -238,7 +240,8 @@ describe('certificate routes', () => {
238240
isInfosecCertV7: true,
239241
isMachineLearningPyCertV7: true,
240242
isCollegeAlgebraPyCertV8: true,
241-
isFoundationalCSharpCertV8: true
243+
isFoundationalCSharpCertV8: true,
244+
isA2EnglishCert: true
242245
}
243246
});
244247

client/i18n/locales/english/intro.json

Lines changed: 67 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,7 @@
13941394
}
13951395
},
13961396
"a2-english-for-developers": {
1397-
"title": "A2 English for Developers (Beta) Certification",
1397+
"title": "A2 English for Developers Certification",
13981398
"intro": [
13991399
"In this English for Developers Curriculum, you'll learn the essentials of English communication. This will follow the A2 level of the Common European Framework of Reference (CEFR). And we've focused on vocabulary that is particularly useful for developers.",
14001400
"The first half of the curriculum will help you get comfortable with English grammar and usage. It will give you tons of hands-on practice. You'll learn basics like introducing yourself, making small talk, and discussing your work.",
@@ -2372,7 +2372,10 @@
23722372
"Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility."
23732373
]
23742374
},
2375-
"qpra": { "title": "30", "intro": [] },
2375+
"qpra": {
2376+
"title": "30",
2377+
"intro": []
2378+
},
23762379
"lecture-understanding-computer-internet-and-tooling-basics": {
23772380
"title": "Understanding Computer, Internet, and Tooling Basics",
23782381
"intro": [
@@ -4170,7 +4173,10 @@
41704173
"Open up this page to review all of the concepts taught including variables, strings, booleans, functions, objects, arrays, debugging, working with the DOM and more."
41714174
]
41724175
},
4173-
"kagw": { "title": "258", "intro": [] },
4176+
"kagw": {
4177+
"title": "258",
4178+
"intro": []
4179+
},
41744180
"lecture-introduction-to-javascript-libraries-and-frameworks": {
41754181
"title": "Introduction to JavaScript Libraries and Frameworks",
41764182
"intro": [
@@ -4443,11 +4449,26 @@
44434449
"In this lesson, you will learn about TypeScript configuration files and how to use them."
44444450
]
44454451
},
4446-
"trvf": { "title": "293", "intro": [] },
4447-
"kwmg": { "title": "294", "intro": [] },
4448-
"nodx": { "title": "295", "intro": [] },
4449-
"erfj": { "title": "296", "intro": [] },
4450-
"muyw": { "title": "297", "intro": [] },
4452+
"trvf": {
4453+
"title": "293",
4454+
"intro": []
4455+
},
4456+
"kwmg": {
4457+
"title": "294",
4458+
"intro": []
4459+
},
4460+
"nodx": {
4461+
"title": "295",
4462+
"intro": []
4463+
},
4464+
"erfj": {
4465+
"title": "296",
4466+
"intro": []
4467+
},
4468+
"muyw": {
4469+
"title": "297",
4470+
"intro": []
4471+
},
44514472
"review-typescript": {
44524473
"title": "Typescript Review",
44534474
"intro": [
@@ -4465,8 +4486,14 @@
44654486
"Review the Front End Libraries concepts to prepare for the upcoming quiz."
44664487
]
44674488
},
4468-
"rdzk": { "title": "301", "intro": [] },
4469-
"vtpz": { "title": "302", "intro": [] },
4489+
"rdzk": {
4490+
"title": "301",
4491+
"intro": []
4492+
},
4493+
"vtpz": {
4494+
"title": "302",
4495+
"intro": []
4496+
},
44704497
"lecture-introduction-to-python": {
44714498
"title": "Introduction to Python",
44724499
"intro": [
@@ -7570,8 +7597,14 @@
75707597
"title": "Introducing Yourself Basics",
75717598
"intro": ["", ""]
75727599
},
7573-
"es-a1-learn-meet-luna": { "title": "Meet Luna", "intro": ["", ""] },
7574-
"es-a1-learn-meet-mateo": { "title": "Meet Mateo", "intro": ["", ""] },
7600+
"es-a1-learn-meet-luna": {
7601+
"title": "Meet Luna",
7602+
"intro": ["", ""]
7603+
},
7604+
"es-a1-learn-meet-mateo": {
7605+
"title": "Meet Mateo",
7606+
"intro": ["", ""]
7607+
},
75757608
"es-a1-learn-meet-julieta": {
75767609
"title": "Meet Julieta",
75777610
"intro": ["", ""]
@@ -8010,7 +8043,10 @@
80108043
"Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility."
80118044
]
80128045
},
8013-
"qpra": { "title": "30", "intro": [] },
8046+
"qpra": {
8047+
"title": "30",
8048+
"intro": []
8049+
},
80148050
"lecture-understanding-computer-internet-and-tooling-basics": {
80158051
"title": "Understanding Computer, Internet, and Tooling Basics",
80168052
"intro": [
@@ -8736,7 +8772,10 @@
87368772
"title": "Single Finals",
87378773
"intro": ["", ""]
87388774
},
8739-
"zh-a1-learn-initials": { "title": "Initials", "intro": ["", ""] },
8775+
"zh-a1-learn-initials": {
8776+
"title": "Initials",
8777+
"intro": ["", ""]
8778+
},
87408779
"zh-a1-learn-compound-finals": {
87418780
"title": "Compound Finals",
87428781
"intro": ["", ""]
@@ -8787,12 +8826,18 @@
87878826
"title": "Introducing Others Basics",
87888827
"intro": ["", ""]
87898828
},
8790-
"zh-a1-learn-the-team": { "title": "The Team", "intro": ["", ""] },
8829+
"zh-a1-learn-the-team": {
8830+
"title": "The Team",
8831+
"intro": ["", ""]
8832+
},
87918833
"zh-a1-learn-a-new-colleague": {
87928834
"title": "A New Colleague",
87938835
"intro": ["", ""]
87948836
},
8795-
"zh-a1-learn-my-family": { "title": "My Family", "intro": ["", ""] },
8837+
"zh-a1-learn-my-family": {
8838+
"title": "My Family",
8839+
"intro": ["", ""]
8840+
},
87968841
"zh-a1-practice-introducing-others": {
87978842
"title": "Introducing Others Practice",
87988843
"intro": ["", ""]
@@ -8955,7 +9000,9 @@
89559000
"part-12": "Containers",
89569001
"part-13": "Using Relational Databases"
89579002
},
8958-
"modules": { "basic-html": "Basic HTML" },
9003+
"modules": {
9004+
"basic-html": "Basic HTML"
9005+
},
89599006
"module-intros": {
89609007
"basic-html": {
89619008
"title": "Basic HTML",
@@ -8968,7 +9015,9 @@
89689015
"daily-coding-challenge": {
89699016
"title": "Daily Coding Challenge",
89709017
"blocks": {
8971-
"daily-coding-challenge": { "title": "Daily Coding Challenge" }
9018+
"daily-coding-challenge": {
9019+
"title": "Daily Coding Challenge"
9020+
}
89729021
}
89739022
},
89749023
"misc-text": {

client/src/templates/Introduction/components/super-block-intro.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ export const ConditionalDonationAlert = ({
5757
const betaCertifications: SuperBlocks[] = [];
5858

5959
const unfinishedCertifications = [
60-
SuperBlocks.A2English,
6160
SuperBlocks.B1English,
6261
SuperBlocks.A1Spanish,
6362
SuperBlocks.A2Spanish,

curriculum/structure/blocks/en-a2-certification-exam.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "A2 English for Developers Certification Exam",
3-
"isUpcomingChange": true,
3+
"isUpcomingChange": false,
44
"dashedName": "en-a2-certification-exam",
55
"helpCategory": "English",
66
"challengeOrder": [

e2e/cert-username-case-navigation.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ test.describe('Public profile certifications', () => {
1616

1717
await expect(
1818
page.getByRole('link', { name: /View.+Certification/ })
19-
).toHaveCount(19);
19+
).toHaveCount(20);
2020
});
2121

2222
test('Should show claimed certifications if the username includes uppercase characters', async ({
@@ -48,7 +48,7 @@ test.describe('Public profile certifications', () => {
4848
await page.waitForURL('/certifiedboozer');
4949
await expect(
5050
page.getByRole('link', { name: /View.+Certification/ })
51-
).toHaveCount(19);
51+
).toHaveCount(20);
5252
});
5353

5454
test.afterAll(() => {

e2e/map.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const LANDING_PAGE_LINKS = [
1212
},
1313
{
1414
slug: 'a2-english-for-developers',
15-
name: 'A2 English for Developers (Beta) Certification'
15+
name: 'A2 English for Developers Certification'
1616
},
1717
{
1818
slug: 'b1-english-for-developers',

shared/config/certification-settings.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ export enum Certification {
3232
PythonV9 = 'python-v9',
3333
RelationalDbV9 = 'relational-databases-v9',
3434
BackEndDevApisV9 = 'back-end-development-and-apis-v9',
35+
A2English = 'a2-english-for-developers',
3536
FullStackDeveloperV9 = 'full-stack-developer-v9',
36-
A2English = 'a2-english-for-developers-v8',
3737
B1English = 'b1-english-for-developers-v8',
3838
A2Spanish = 'a2-professional-spanish-v8',
3939
A2Chinese = 'a2-professional-chinese-v8',
@@ -54,6 +54,7 @@ export function isCertification(x: string): x is Certification {
5454
// "Current" certifications are the subset of standard certifications that are
5555
// live and not legacy.
5656
export const currentCertifications = [
57+
Certification.A2English,
5758
Certification.FoundationalCSharp
5859
] as const;
5960

@@ -95,7 +96,6 @@ export const upcomingCertifications = [
9596
Certification.RelationalDbV9,
9697
Certification.BackEndDevApisV9,
9798
Certification.FullStackDeveloperV9,
98-
Certification.A2English,
9999
Certification.B1English,
100100
Certification.A2Spanish,
101101
Certification.A2Chinese,
@@ -205,11 +205,11 @@ export const certSlugTypeMap = {
205205
[Certification.RelationalDb]: certTypes.relationalDatabaseV8,
206206
[Certification.CollegeAlgebraPy]: certTypes.collegeAlgebraPyV8,
207207
[Certification.FoundationalCSharp]: certTypes.foundationalCSharpV8,
208+
[Certification.A2English]: certTypes.a2English,
208209

209210
// upcoming
210211
[Certification.RespWebDesignV9]: certTypes.respWebDesignV9,
211-
[Certification.JsV9]: certTypes.javascriptV9,
212-
[Certification.A2English]: certTypes.a2English
212+
[Certification.JsV9]: certTypes.javascriptV9
213213
};
214214

215215
export const superBlockCertTypeMap = {

tools/challenge-editor/api/configs/super-block-list.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export const superBlockList = [
7272
path: 'foundational-c-sharp-with-microsoft'
7373
},
7474
{
75-
name: 'A2 English for Developers (Beta)',
75+
name: 'A2 English for Developers',
7676
path: 'a2-english-for-developers'
7777
},
7878
{

0 commit comments

Comments
 (0)