SethPerna / tea_subscription

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tea_Subscription

languages PRs rspec simplecov All Contributors

Background and Description

Tea_Subscription is a Backend Rails API application. There are three API endpoints to create a tea subscription for a customer, to de-activate that subscription and to return an index of all of a customers subscriptions, active and inactive. The database allows for a subscription to have many teas and ensures uniqueness of teas with use of a join table of tea_subscriptions. The application is thoroughly tested using RSpec and a variety of testing gems. It ensures valid and unique emails among many other features. The application was designed with Frontend functionality in mind to make data transfer seamless and logical. The endpoints return a serialized response in accordance with JSON API specifications.

Requirements and Setup (for Mac):

Ruby and Rails

  • Ruby Version 2.7.4
  • Rails Version 5.2.7

Gems Utilized

  • RSpec
  • Pry
  • SimpleCov
  • Shoulda-Matchers
  • Factory_Bot_Rails
  • Faker
  • jsonapi-serialize
  • Webmock
  • VCR

Setup

  1. Clone this repository: On your local machine open a terminal session and enter the following commands for SSH or HTTPS to clone the repositiory.
  • using ssh key
$ git clone git@github.com:SethPerna/tea_subscription.git
  • using https
$ git clone https://github.com/SethPerna/tea_subscription

Once cloned, you'll have a new local copy in the directory you ran the clone command in.

  1. Change to the project directory:
    In terminal, use $cd to navigate to the backend Application project directory.
$ cd tea_subscription
  1. Install required Gems utilizing Bundler:
    In terminal, use Bundler to install any missing Gems. If Bundler is not installed, first run the following command.
$ gem install bundler

If Bundler is already installed or after it has been installed, run the following command.

$ bundle install

There should be be verbose text diplayed of the installation process that looks similar to below. (this is not an actual copy of what will be output).

$ bundle install
Using rake 13.0.6
Using concurrent-ruby 1.1.9
Using i18n 1.9.1
Using minitest 5.15.0
Using thread_safe 0.3.6
Using tzinfo 1.2.9
Using activesupport 5.2.6
Using builder 3.2.4
Using erubi 1.10.0
Using mini_portile2 2.7.1
Using racc 1.6.0
Using nokogiri 1.13.1
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.13.0
Using rails-html-sanitizer 1.4.2
Using actionview 5.2.6
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 5.2.6
Using nio4r 2.5.8
Using websocket-extensions 0.1.5
Using websocket-driver 0.7.5
Using actioncable 5.2.6
Using globalid 1.0.0
Using activejob 5.2.6
Using mini_mime 1.1.2
Using mail 2.7.1
Using actionmailer 5.2.6
Using activemodel 5.2.6
Using arel 9.0.0
Using activerecord 5.2.6
Using marcel 1.0.2
Using activestorage 5.2.6
Using msgpack 1.4.4
Using bootsnap 1.10.3
Using bundler 2.1.4
Using byebug 11.1.3
Using coderay 1.1.3
Using diff-lcs 1.5.0
Using docile 1.4.0
Using factory_bot 6.2.0
Using method_source 1.0.0
Using thor 1.2.1
Using railties 5.2.6
Using factory_bot_rails 6.2.0
Using faker 2.19.0
Using ffi 1.15.5
Using jsonapi-serializer 2.2.0
Using rb-fsevent 0.11.1
Using rb-inotify 0.10.1
Using ruby_dep 1.5.0
Using listen 3.1.5
Using pg 1.3.1
Using pry 0.14.1
Using puma 3.12.6
Using sprockets 4.0.2
Using sprockets-rails 3.4.2
Using rails 5.2.6
Using rspec-support 3.10.3
Using rspec-core 3.10.2
Using rspec-expectations 3.10.2
Using rspec-mocks 3.10.3
Using rspec-rails 5.1.0
Using shoulda-matchers 5.1.0
Using simplecov-html 0.12.3
Using simplecov_json_formatter 0.1.3
Using simplecov 0.21.2
Using spring 2.1.1
Using spring-watcher-listen 2.0.1

If there are any errors, verify that bundler, Rails, and your ruby environment are correctly setup.

  1. Database Migration
    Before using the web application you will need to setup your databases locally by running the following command
$ rails db:{drop,create,migrate,seed}
  1. Startup and Access
    Finally, in order to use the web app you will have to start the server locally and access the app through a web browser.
  • Start server
$ rails s

Endpoints provided

  • get '/subscriptions', to: 'subscriptions#index'

Screen Shot 2022-04-14 at 8 00 15 AM

Screen Shot 2022-04-14 at 8 00 40 AM

  • post '/subscriptions', to: 'subscriptions#create'

Screen Shot 2022-04-14 at 8 06 39 AM

  • patch '/subscriptions', to: 'subscriptions#update'

Screen Shot 2022-04-14 at 8 17 29 AM

  • ALL INVALID REQUESTS HANDLED WITH THIS RESPONSE FROM SERVER

Screen Shot 2022-04-14 at 8 18 37 AM

Contributors (emoji key):

</tr>

Seth (he/him)

💻 ⚠️ 👀

This project follows the all-contributors specification.

About


Languages

Language:Ruby 99.5%Language:HTML 0.5%