Skip to content

Commit

Permalink
release: v0.13.1 (#59)
Browse files Browse the repository at this point in the history
* fix: Send course information when an student joins using invitation code (#58)

* docs(openapi): Update spec

* fix(courses): Return course information in endpoint to join using invitation code

* test(accounts): Update tests
  • Loading branch information
PedroChaparro authored Oct 4, 2023
1 parent 2a056c8 commit 95a1f80
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 23 deletions.
30 changes: 23 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,45 @@
## [0.13.1](https://github.com/upb-code-labs/main-api/compare/v0.13.0...v0.13.1) (2023-10-04)


### Bug Fixes

* Send course information when an student joins using invitation code ([#58](https://github.com/upb-code-labs/main-api/issues/58)) ([c534e71](https://github.com/upb-code-labs/main-api/commit/c534e711f12fbb78d674dc3ff50cddc0fe4ec416))



# [0.13.0](https://github.com/upb-code-labs/main-api/compare/v0.12.0...v0.13.0) (2023-09-30)


### Features

- Toggle course visibility ([#55](https://github.com/upb-code-labs/main-api/issues/55)) ([28ec783](https://github.com/upb-code-labs/main-api/commit/28ec7836685f0b69502f3313245ba5c276229d44))
* Toggle course visibility ([#55](https://github.com/upb-code-labs/main-api/issues/55)) ([28ec783](https://github.com/upb-code-labs/main-api/commit/28ec7836685f0b69502f3313245ba5c276229d44))



# [0.12.0](https://github.com/upb-code-labs/main-api/compare/v0.11.0...v0.12.0) (2023-09-30)


### Features

- Get teachers and students courses ([#52](https://github.com/upb-code-labs/main-api/issues/52)) ([2265a05](https://github.com/upb-code-labs/main-api/commit/2265a0550fc11c18e8eedd66bcc4d25ab07f5f50))
* Get teachers and students courses ([#52](https://github.com/upb-code-labs/main-api/issues/52)) ([2265a05](https://github.com/upb-code-labs/main-api/commit/2265a0550fc11c18e8eedd66bcc4d25ab07f5f50))



# [0.11.0](https://github.com/upb-code-labs/main-api/compare/v0.10.0...v0.11.0) (2023-09-29)


### Features

- Join course using invitation code ([#51](https://github.com/upb-code-labs/main-api/issues/51)) ([6206f3c](https://github.com/upb-code-labs/main-api/commit/6206f3c78b7a6ff9bb2f10c6704a01ad75358d3b))
* Join course using invitation code ([#51](https://github.com/upb-code-labs/main-api/issues/51)) ([6206f3c](https://github.com/upb-code-labs/main-api/commit/6206f3c78b7a6ff9bb2f10c6704a01ad75358d3b))



# [0.10.0](https://github.com/upb-code-labs/main-api/compare/v0.9.0...v0.10.0) (2023-09-29)


### Features

- Get invitation code ([#50](https://github.com/upb-code-labs/main-api/issues/50)) ([35af762](https://github.com/upb-code-labs/main-api/commit/35af7627d6f51ac8a167b80db6ff25019e12a28c))
* Get invitation code ([#50](https://github.com/upb-code-labs/main-api/issues/50)) ([35af762](https://github.com/upb-code-labs/main-api/commit/35af7627d6f51ac8a167b80db6ff25019e12a28c))

# [0.9.0](https://github.com/upb-code-labs/main-api/compare/v0.8.0...v0.9.0) (2023-09-27)

### Features

- Create courses ([#43](https://github.com/upb-code-labs/main-api/issues/43)) ([09e15f8](https://github.com/upb-code-labs/main-api/commit/09e15f8c9460404a04eb30aa5417ca252f477a97))
20 changes: 14 additions & 6 deletions __tests__/integration/courses_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func TestJoinCourse(t *testing.T) {
},
{
InvitationCode: invitationCode,
ExpectedStatusCode: http.StatusNoContent,
ExpectedStatusCode: http.StatusOK,
},
{
InvitationCode: invitationCode, // Already joined
Expand All @@ -238,8 +238,16 @@ func TestJoinCourse(t *testing.T) {
// --- 1. Try with a student account ---

for _, testCase := range testCases {
code := AddStudentToCourse(testCase.InvitationCode)
response, code := AddStudentToCourse(testCase.InvitationCode)
c.Equal(testCase.ExpectedStatusCode, code)

// Check the response fields
if code == http.StatusOK {
c.NotEmpty(response["course"])
c.NotEmpty(response["course"].(map[string]interface{})["uuid"])
c.NotEmpty(response["course"].(map[string]interface{})["name"])
c.NotEmpty(response["course"].(map[string]interface{})["color"])
}
}

// --- 2. Try with a teacher account ---
Expand All @@ -259,7 +267,7 @@ func TestJoinCourse(t *testing.T) {
}
}

func AddStudentToCourse(invitationCode string) (statusCode int) {
func AddStudentToCourse(invitationCode string) (response map[string]interface{}, statusCode int) {
// Login as a student
w, r := PrepareRequest("POST", "/api/v1/session/login", map[string]interface{}{
"email": registeredStudentEmail,
Expand All @@ -274,7 +282,7 @@ func AddStudentToCourse(invitationCode string) (statusCode int) {
r.AddCookie(cookie)
router.ServeHTTP(w, r)

return w.Code
return ParseJsonResponse(w.Body), w.Code
}

func TestGetCourses(t *testing.T) {
Expand Down Expand Up @@ -358,8 +366,8 @@ func TestToggleCourseVisibility(t *testing.T) {
invitationCode, code := GetInvitationCode(courseUUID)
c.Equal(http.StatusOK, code)
c.NotEmpty(invitationCode)
code = AddStudentToCourse(invitationCode)
c.Equal(http.StatusNoContent, code)
_, code = AddStudentToCourse(invitationCode)
c.Equal(http.StatusOK, code)

// Assertion> Hide the course
json, code := ToggleCourseVisibility(cookie, courseUUID)
Expand Down
10 changes: 9 additions & 1 deletion docs/openapi/spec.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -423,8 +423,16 @@ paths:
example: "8_JI4bFA7"
required: true
responses:
"204":
"200":
description: The student joined the course successfully.
content:
application/json:
schema:
type: object
properties:
course:
allOf:
- $ref: "#/components/schemas/public_course_fields"
"400":
description: The invitation code is not valid.
content:
Expand Down
12 changes: 6 additions & 6 deletions src/courses/application/use_cases.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,33 +84,33 @@ func (useCases *CoursesUseCases) SaveCourse(dto *dtos.CreateCourseDTO) (*entitie
return useCases.Repository.SaveCourse(dto)
}

func (useCases *CoursesUseCases) JoinCourseUsingInvitationCode(dto *dtos.JoinCourseUsingInvitationCodeDTO) error {
func (useCases *CoursesUseCases) JoinCourseUsingInvitationCode(dto *dtos.JoinCourseUsingInvitationCodeDTO) (*entities.Course, error) {
// Get the course by the invitation code
course, err := useCases.Repository.GetCourseByInvitationCode(dto.InvitationCode)
if err != nil {
// Throw a domain error if no course with the given invitation code was found
if err == sql.ErrNoRows {
return errors.NoCourseWithInvitationCodeError{
return nil, errors.NoCourseWithInvitationCodeError{
Code: dto.InvitationCode,
}
}

return err
return nil, err
}

// Check if the student is already in the course
isStudentInCourse, err := useCases.Repository.IsStudentInCourse(dto.StudentUUID, course.UUID)
if err != nil {
return err
return nil, err
}
if isStudentInCourse {
return errors.StudentAlreadyInCourse{
return nil, errors.StudentAlreadyInCourse{
CourseName: course.Name,
}
}

err = useCases.Repository.AddStudentToCourse(dto.StudentUUID, course.UUID)
return err
return course, err
}

func (useCases *CoursesUseCases) GetEnrolledCourses(userUUID string) (*dtos.EnrolledCoursesDto, error) {
Expand Down
10 changes: 8 additions & 2 deletions src/courses/infrastructure/http/http_controllers.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ func (controller *CoursesController) HandleJoinCourse(c *gin.Context) {
}

// Join course
err := controller.UseCases.JoinCourseUsingInvitationCode(&dtos.JoinCourseUsingInvitationCodeDTO{
course, err := controller.UseCases.JoinCourseUsingInvitationCode(&dtos.JoinCourseUsingInvitationCodeDTO{
StudentUUID: studentUUID,
InvitationCode: invitationCode,
})
Expand All @@ -111,7 +111,13 @@ func (controller *CoursesController) HandleJoinCourse(c *gin.Context) {
return
}

c.JSON(http.StatusNoContent, nil)
c.JSON(http.StatusOK, gin.H{
"course": gin.H{
"uuid": course.UUID,
"name": course.Name,
"color": course.Color,
},
})
}

func (controller *CoursesController) HandleGetEnrolledCourses(c *gin.Context) {
Expand Down
2 changes: 1 addition & 1 deletion version.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "0.13.0"
"version": "0.13.1"
}

0 comments on commit 95a1f80

Please sign in to comment.