-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Test: src/graphql/types/Advertisement/updatedAt.ts #3121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test: src/graphql/types/Advertisement/updatedAt.ts #3121
Conversation
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Caution Review failedThe pull request is closed. WalkthroughThis pull request introduces a comprehensive test suite for the Changes
Sequence Diagram(s)sequenceDiagram
participant Client
participant resolveUpdatedAt
participant Database
Client->>resolveUpdatedAt: Call with Advertisement & context
resolveUpdatedAt->>Client: Check authentication
alt Unauthenticated
resolveUpdatedAt-->>Client: TalawaGraphQLError (unauthenticated)
else Authenticated
resolveUpdatedAt->>resolveUpdatedAt: Verify organizationId exists
alt organizationId is null
resolveUpdatedAt-->>Client: TalawaGraphQLError (invalid_arguments)
else organizationId valid
resolveUpdatedAt->>Database: Retrieve user role & memberships
alt Authorized (sys admin or org admin)
Database-->>resolveUpdatedAt: Return user data
resolveUpdatedAt-->>Client: Return updatedAt date
else Unauthorized
resolveUpdatedAt-->>Client: TalawaGraphQLError (unauthorized_action)
end
end
end
sequenceDiagram
participant Client
participant CommunityResolver
participant UsersTable
Client->>CommunityResolver: Request updater field resolution
CommunityResolver->>CommunityResolver: Check isAuthenticated
alt Not Authenticated
CommunityResolver-->>Client: TalawaGraphQLError (unauthenticated)
else Authenticated
CommunityResolver->>CommunityResolver: Check for updaterId
alt updaterId missing
CommunityResolver-->>Client: Return null
else updaterId exists
CommunityResolver->>UsersTable: Query for updater user
alt User not found
CommunityResolver->>CommunityResolver: Log warning
CommunityResolver-->>Client: TalawaGraphQLError (updater not found)
else User found
UsersTable-->>CommunityResolver: Return updater user
CommunityResolver-->>Client: Return updater user
end
end
end
Assessment against linked issues
Possibly related issues
Suggested labels
Suggested reviewers
📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (2)
src/graphql/context.ts
(1 hunks)test/graphql/types/Advertisement/updatedAt.test.ts
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Analyse Code With CodeQL (typescript)
🔇 Additional comments (1)
test/graphql/types/Advertisement/updatedAt.test.ts (1)
49-125
: LGTM! The resolver implementation is well-structured.The resolver correctly implements the authentication and authorization checks as per the PR objectives. It properly validates user roles and organization membership before allowing access to the
updatedAt
field.
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
@palisadoes , i do not know but can you tell me why are these tests failing ?? |
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
@coderabbitai full review |
✅ Actions performedFull review triggered. |
@NishantSinghhhhh: I can see several issues that need to be addressed:
Could you try running these checks locally and share any specific errors you see? This will help me provide more targeted guidance. ʕ •ᴥ•ʔ 🔗 Analysis chain@NishantSinghhhhh: Let me help you identify potential issues:
Could you share the specific test errors you're seeing? This will help me provide more targeted guidance. ʕ •ᴥ•ʔ 🏁 Scripts executedThe following scripts were executed for the analysis: Script:
Length of output: 7976 Script:
Length of output: 9257 Script:
Length of output: 900 Script:
Length of output: 556 Script:
Length of output: 295 ✅ Actions performedReview triggered.
|
Signed-off-by: NishantSinghhhhh <[email protected]>
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
Please make a minor commit. The package that was causing the error has been updated |
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
@palisadoes , I have pulled the latest code , but still the tests are failing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
test/graphql/types/Advertisement/updatedAt.test.ts
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Analyse Code With CodeQL (typescript)
🔇 Additional comments (5)
test/graphql/types/Advertisement/updatedAt.test.ts (5)
60-72
: Good job handling nullorganizationId
.
Checking for a nullorganizationId
prevents potential database query errors and is consistent with the user flow that requires valid organization data. This test coverage is valuable for input validation.
99-109
: Make the administrator role comparison more robust.
Currently, the system administrator check is case-sensitive (currentUser.role === "administrator"
). If the intended behavior is to accept variations of the same role, consider a case-insensitive comparison or an enum of valid roles. This comment builds on previous feedback.
118-123
: Enhance the database error message.
Instead of throwing a generic"Database connection error"
, consider including the actual error message for easier troubleshooting (as previously suggested).
330-337
: Clarify the test expectation for error messages.
The test checks for/Database connection error|Something went wrong/
, but the code only throws"Database connection error"
. If you truly want to allow multiple error messages, expand the code’s catch block to match. Otherwise, refine the test to expect just"Database connection error"
.
339-352
: Great coverage of empty role edge case.
Verifying that an empty role is treated as unauthorized is a helpful safety check. This ensures consistent role validation across the board.
…-api into develop-postgres
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
test/graphql/types/Advertisement/updatedAt.test.ts
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Analyse Code With CodeQL (typescript)
🔇 Additional comments (6)
test/graphql/types/Advertisement/updatedAt.test.ts (6)
15-18
: Remove or repurpose the unusedand
method.This interface defines
eq
andand
methods, but onlyeq
is being used in the code. Consider removingand
or implementing it to avoid carrying dead code.
60-72
: Add missing edge case test fororganizationId
set to null.You have a check to throw an error if
parent.organizationId
is null, but there is no corresponding test case to cover this scenario. Ensuring you have a dedicated test fororganizationId = null
would improve coverage and reliability.
76-91
: Consider adding retry logic for database operations.In the event of transient database failures, it may be helpful to add retry logic. This would help ensure robust error handling, especially in critical authentication checks.
97-107
: Make role comparison case-insensitive if that is the desired design.Currently,
"administrator"
is the only string that grants system or organization-level admin access. This disallows variations like"Administrator"
or"ADMINISTRATOR"
. If you intend to support variations (or prevent user confusion), consider a case-insensitive comparison.
117-121
: Use a more descriptive database error message.Throwing a generic
"Database connection error"
can hamper debugging. Incorporating the underlying error message can provide more context and make troubleshooting easier.
301-314
: Add a test for role names containing special characters.Although there is a test for case sensitivity, testing scenarios with punctuation or accented characters in user roles can help uncover edge cases and ensure full coverage.
There was a recent issue with the I'll close and reopen the PR to see if that fixes it. If not, please close the PR and submit a new one. |
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
Signed-off-by: NishantSinghhhhh <[email protected]>
Our Pull Request Approval ProcessThanks for contributing! Testing Your CodeRemember, your PRs won't be reviewed until these criteria are met:
Our policies make our code better. ReviewersDo not assign reviewers. Our Queue Monitors will review your PR and assign them.
Reviewing Your CodeYour reviewer(s) will have the following roles:
CONTRIBUTING.mdRead our CONTRIBUTING.md file. Most importantly:
Other
|
@palisadoes , closing this PR |
What kind of change does this PR introduce?
Feature: Adds functionality to resolve the updatedAt field in an advertisement.
Issue Number:
Fixes: #3087
Snapshots/Videos:
Screencast.from.2025-02-03.00-38-21.webm
If relevant, did you update the documentation?
Summary
This PR introduces logic for resolving the updatedAt field in advertisements. It ensures that only authenticated users with the correct roles (administrator or organization administrator) can access the field. The change involves the following key checks:
Authentication Check: If the user is not logged in, an unauthenticated error is thrown.
Role-based Access: If the user is an organization administrator or system administrator, access is granted to the updatedAt field.
Database Query Logic: A series of database queries checks the user’s role and membership in the specified organization to ensure appropriate access.
Error Handling: Comprehensive error handling is implemented for missing or invalid data and database connection errors.
This PR also adds several test cases to validate the functionality, ensuring that unauthorized users cannot access the field and that proper database queries are executed.
Does this PR introduce a breaking change?
No.
Checklist
CodeRabbit AI Review
I have reviewed and addressed all critical issues flagged by CodeRabbit AI
I have implemented or provided justification for each non-critical suggestion
I have documented my reasoning in the PR comments where CodeRabbit AI suggestions were not implemented
Test Coverage
I have written tests for all new changes/features
I have verified that test coverage meets or exceeds 95%
I have run the test suite locally and all tests pass
Other information
The test suite includes multiple scenarios such as verifying authentication, role validation, handling missing or incorrect data, and ensuring correct database queries are being executed.
Have you read the contributing guide?
Yes.
Summary by CodeRabbit
Tests
resolveUpdatedAt
function to validate behavior under various scenarios, including unauthenticated access and role-based permissions.Bug Fixes