The Capstone Experience for the BSU Computer Science BS First (solo) Project





Project 1 Sprint 3


Summary: In this sprint3 of your first project, You will get more data to add to your database


Tools:

We will continue to use the same version control, continuous integration tools and programming language requirements that we put together for parts one & two.


Sprint 3: Getting some additional data: 

Due: Sunday  Feb 20th  at 11:59pm


For the Min/Maxers, here is the grading sheet for sprint3


  1. Use the same project that you used last time. I will just do a git pull on the project and get the updates.

  2. Get the most Popular TV shows according to IMDB (https://imdb-api.com/api#MostPopularTVs-header ) and put that data into your database. Be sure to include the rankUpDown value for this query when adding to the database, Also note that the rank in the most popular shows is not the same as the rank for the top250 query (so you will likely need a new table)
  3. Create at least one more table in your database for movies (you might need more)
  4. Get the following data from the API
    1. get the top250 movies
    2. get the most popular movies
    3. for the movies be sure to include columns in the database for all of the same information that we stored for the TV shows.
    4. Get the ratings data for the 3 movies that have had the biggest positive change for the rankUpDown, and the one movie that had the biggest negative change, put these four records into a table.
    5. make sure that your movie ratings data is saved in a table 
    6. be sure to not stomp on the ratings with the two queries (top250 and most popular) each of which has its own ratings - which do not match up.
  5. Write automated tests
    1. write test(s) to assure your method to find the biggest movers (positive and negative) for the movie rankings works properly
      1. eg, create a list of dictionaries with sample data in your testing file, pass that as the parameter for function/method that you wrote to find the top positive and biggest drop movies, make sure the right entries are returned
      2. be sure to include both 'happy path' tests and bad data tests at least.
    2. write a test to make sure the new table is there
    3. make sure your previous tests are still there and still pass
    4. write a test to make sure that your new write to table works
    5.  write a test that runs your create table functions and makes sure that the new movie ratings table is foreign-keyed to the movie entries.
    6. Make sure you are writing tests that exercise your code rather than testing 'artifacts' (don't just open an existing database - that is testing that your code once worked, not that it works now)
    7. Hint: to check your database, there is a table in sqlite3 called sqlite_master which contains all of the information about all created tables. Some documentation on sqlite system tables
  6. make sure your DevOps stuff all works (tests are run on github and formatting checks still work)
  7. update your readme and requirements.txt (or equivalent go.mod or gradle or whatever you need for your language.) 
  8. commit and push often so you lose nothing if your computer dies.
  9. and good git commit comments will be part of the grade






)