-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Implement "Create a new project" option #1510
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
Conversation
bkendall
left a comment
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.
I think things generally look fine in this PR... I'd ask @mbleigh for his opinion on where that code ends up as well though.
|
@bkendall, @mbleigh, @nbegley. One last problem in this PR. So the question is, can we just omit testing this? (I think we shouldn't). And if we decide to test, what're your opinions on testing |
|
Please don't add This is one of those difficult choices - at some point, things aren't easily testable (especially when there's user input and logging involved), so we have to put some trusts in the tests we have and the manual testing we do. The fact that the function is exported doesn't make testing a requirement, technically. We definitely should have as many tests as we can, but at some point it becomes difficult. Design-wise, this is why we try to keep as much of that logging in the Command files - those are already very difficult to test, but if we're testing the functional core behind it, we can be very confident that the command is going to be successful. It's not the end of the world if we can't write tests for something. If the design can be changed so that better tests can be written, that's always preferred. But please, don't bring in |
|
Sounds good to me that we can omit testing logging behavior here. I also believe the underlying tested api logic :). In fact the its logic is quite simple too. |
) * Implement getFirebaseProject and deprecate firebaseApi * Implement getProjectPage() and refactor listFirebaseProject() * Implement use an existing project option * Update behavior when there's no project * Implement "Create a new project" option (#1510)
) * Implement getFirebaseProject and deprecate firebaseApi * Implement getProjectPage() and refactor listFirebaseProject() * Implement use an existing project option * Update behavior when there's no project * Implement "Create a new project" option (#1510)
) * Implement getFirebaseProject and deprecate firebaseApi * Implement getProjectPage() and refactor listFirebaseProject() * Implement use an existing project option * Update behavior when there's no project * Implement "Create a new project" option (#1510)
* fix build container to have later npm (#1570) * Release Firestore emulator v1.7.0 (#1571) * Use ADC for Emulator Tests (#1575) * Adds privacy policy link to login notice. (#1576) * Use displayName when available (#1555) * shows displayName if available * formats * uses displayName if available * formats * Declare project and app metadata types (#1470) and update dependencies * Implement projects:create command (#1429) * Implement api calls to support project creation * Initial working command * Replace nock with sinon to mock api requests * export createFirebaseProject() and update tests * Implement projects:create command * Remove poll helper methods * Rename firebase-resource-manager.ts to projectsCreate.ts * Declare project and app metadata types * Update timeout constant * Update unit tests as suggestion * Split metadata.ts into apps.ts and projects.ts * move code to projects.ts * Addressing comment * Implement apps:create command (#1438) * Implement API calls for apps:create command * Implement apps:create command * Remove --sha-certificate option * Support providing appStoreId for iOS app creation * Update the command to use getProjectId() * Update unit tests as suggestion * move code to apps.ts * Add input options interfaces and getAppPlatform * Implement projects:list command (#1465) * Implement projects:list command * Matching changes from metadata * Move code to projects.ts * Resolving TODO * Implement apps:list command (#1477) * Implement apps:list command * Introducing AppPlatform.ANY and code refactoring * Move code to apps.ts * Implement getFirebaseProject and deprecate firebaseApi (#1502) * Re-implement `firebase init` command's default project setup flow (#1506) * Implement getFirebaseProject and deprecate firebaseApi * Implement getProjectPage() and refactor listFirebaseProject() * Implement use an existing project option * Update behavior when there's no project * Implement "Create a new project" option (#1510) * [projects:list] and [apps:list] Logging count (#1526) * Logging total project count after listing. * Logging total app count * Implement apps:sdkconfig command (#1515) * Implement API methods for apps:sdkconfig * Implement apps:sdkconfig command * Add getOrPromptProject function to projects.ts (#1552) * Make getAppPlatform throw if the input platform is unknown * Update changelog for project and app management * Move changelog into CHANGELOG.MD * No more requireAuth() for functions (#1577) * Add the ability to add Firebase resources to an existing GCP project (#1572) * Implement projects:addfirebase command * Update init command to have add Firebase option * implements style fixes suggested in other pr * typescriptifys ensureApiEnabled (#1554) * typescriptifys ensureApiEnabled This reverts commit e7ec80f. * style fixes for switch to ts * Release Firestore emulator v1.7.1 (#1584)
Description
Implement
Create a new projectoption offirebase initcommand to actually create a new project instead of asking user to create the project with Firebase Console.Use an existing project,Create a new projectandDon't set up default projectUse and existing project: (completed)Create a new projectprojects:createcommand to create a new projectDon't set up default project=> do nothingAPI methods changes
createFirebaseProject(), which implements the whole project creation flow and command line output, fromcommands/projects-create.tstomanagement/projects.tssince this process is reused ininit/features/project.tsNotes:
firebase initcommand's default project setup flow #1506TODO:
createFirebaseProject()method which was moved into/management/projects.ts, once the approach is approved (Update: skipping testing since we already tested the underlying API methods)