Skip to content
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

Earth/Taylor/Lina #4

Open
wants to merge 37 commits into
base: master
Choose a base branch
from
Open

Conversation

TaylorMililani
Copy link

Assignment Submission: Slack CLI

Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.

Reflection

Question Answer
How did you go about exploring the Slack API? Did you learn anything that would be useful for your next project involving an API? Postman came in handy while learning Slack API, as well as changing the keys to vary what kind of responses we would get back. We learned more about extracting specific data from responses and learning how to read the responses.
Give a short summary of the request/response cycle. Where does your program fit into that scheme? We're the users and we're running the slack program that we made. The slack program is then making requests to the API server, it receives the request and processes it and receives the request and sends a response back to our slack program that we created. The program receives the response and displays it to the user. If the user wants to take another action, the cycle begins again.
How does your program check for and handle errors when using the Slack API? We created custom error classes to help handle errors when using the Slack API. When it raises the error it will be accompanied by a short message telling the user what the error is.
How did the design and organization of your project change over time? over time certain methods were moved around based on what we felt made the most sense.
Did you use any of the inheritance idioms we've talked about in class? How? Details and list_all were abstract methods that we used.
How does VCR aid in testing a program that uses an API? VCR allowed us to save our responses so as not to run the API Token every time we ran tests. So if the server was down or anything we could still run our tests without having to change them.

@jmaddox19
Copy link

Slack CLI

Major Learning Goals/Code Review

Criteria yes/no, and optionally any details/lines of code to reference
Practices best practices working with APIs. The .env is not checked into git, and no API token was directly used in the Ruby code without ENV. ✔️
Practices error handling with APIs. For all pieces of code that make an API call, it handles API requests that come back with errors/error status codes appropriately. ✔️
Implements inheritance and inheritance idioms. There is a Recipient class. User and Channel inherit from Recipient. In Recipient, there are appropriate methods defined that are used in both User and Channel. Some may be implemented. Some may be template methods. ✔️
Practices clean code. lib/slack.rb only interacts with Workspace to show a separation of responsibilities. Complex logic is broken into smaller helper methods. ✔️
Practices instance methods vs. class methods appropriately. The methods to list all Channels or Users is likely a class method within those respective classes. ✔️
Practices best practices for testing. The project has and uses VCR mocking when running tests, and can run offline. ✔️
Practices writing tests. The User, Channel, and Workspace classes have unit tests. ✔️
Practices writing tests. There are tests for sending messages (the location of these tests may differ, but is likely in Recipient) ✔️
Practices git with at least 15 small commits and meaningful commit messages ✔️ Yes! With commits from both of you! Some of the messages aren't very detailed but most are!

Functional Requirements

Functional Requirement yes/no
As a user of the CLI program, I can list users and channels ✔️
As a user of the CLI program, I can select users and channels ✔️
As a user of the CLI program, I can show the details of a selected user or channel ✔️
As a user of the CLI program, when I input something inappropriately, the program runs without crashing ✔️

Overall Feedback

Great work!! Y'all made a whole program that interacts with Slack in real time from the command terminal!!
I hope y'all have gotten to celebrate and appreciate how fun of an accomplishment that is!!
The program all works together as expected and the code is very readable!

See my inline comments as well for more detailed feedback

Overall Feedback Criteria yes/no
Green (Meets/Exceeds Standards) 7+ in Code Review && 3+ in Functional Requirements
Yellow (Approaches Standards) 6+ in Code Review && 2+ in Functional Requirements
Red (Not at Standard) 0-5 in Code Review or 0,1 in Functional Reqs, or assignment is breaking/doesn’t run with less than 5 minutes of debugging

Code Style Bonus Awards

Was the code particularly impressive in code style for any of these reasons (or more...?)

Quality Yes?
Perfect Indentation
Elegant/Clever
Descriptive/Readable
Concise
Logical/Organized


private

def self.from_api(recipient)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clever and clean that this is a separate method and you made it private!

when "select user"
puts "User name or ID?"
user = gets.chomp
selected_item = workspace.select_user(user)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because slack.rb is already doing a lot, it would make the program easier for people to read and understand if the Workspace class had an instance variable had an instance variable to track which Recipient is currently selected instead of tracking it here.

return selected
end

def send_message(selected_item, text)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This only seems to work for sending messages to channels but not users. Did y'all realize that as you were building it and testing it out?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants