Skip to content

Instantly share code, notes, and snippets.

View pascalesdedy's full-sized avatar

Pascales Kurniawan pascalesdedy

  • Not All Who Wander Are Lost - JRR Tolkien
  • Yogyakarta
View GitHub Profile
....
gem 'carrierwave'
gem 'cloudinary'
....
@pascalesdedy
pascalesdedy / Gemfile
Last active October 20, 2018 15:11
Gemfile used in Simple CRUD TDD
group :development, :test do
gem 'rspec-rails'
end
group :test do
gem 'factory_bot_rails'
gem 'shoulda-matchers'
gem 'faker'
gem 'database_cleaner'
end
@pascalesdedy
pascalesdedy / rails_helper.rb
Last active October 20, 2018 15:13
spec/rails_helper.rb used in Simple CRUD TDD
# require database cleaner at the top level
require 'database_cleaner'
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :rails
end
end
@pascalesdedy
pascalesdedy / article_spec.rb
Created October 20, 2018 15:17
spec/model/article_spec.rb - used for Simple CRUD TDD
require 'rails_helper'
RSpec.describe Article, type: :model do
# Validation tests
# ensure columns title and created_by are present before saving
it { should validate_presence_of(:title) }
it { should validate_presence_of(:content) }
end
@pascalesdedy
pascalesdedy / article.rb
Created October 20, 2018 15:20
app/model/article.rb - used for simple CRUD using TDD
class Article < ApplicationRecord
validates_presence_of :title, :content
end
@pascalesdedy
pascalesdedy / article.rb
Last active October 20, 2018 15:28
spec/factories/article.rb - used for creating CRUD using simple TDD
FactoryBot.define do
factory :article do
title { Faker::Lorem.word }
content { Faker::Lorem.paragraph(2) }
end
end
@pascalesdedy
pascalesdedy / article_spec.rb
Last active October 21, 2018 19:11
/spec/request/articles_spec.rb - used for creating simple CRUD TDD
require 'rails_helper'
RSpec.describe 'articles API', type: :request do
# initialize test data
let!(:articles) { create_list(:article, 10) }
let(:article_id) { articles.first.id }
# Test suite for GET /articles
describe 'GET /articles' do
# make HTTP get request before each example
@pascalesdedy
pascalesdedy / routes.rb
Created October 21, 2018 19:15
app/config/routes.rb - simple rails API TDD
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
resources :articles
end
@pascalesdedy
pascalesdedy / articles_controller.rb
Created October 21, 2018 19:18
app/controller/articles_controller.rb - Simple rails api server TDD
class ArticlesController < ApplicationController
skip_before_action :verify_authenticity_token
before_action :set_article, only: [:show, :update, :destroy]
# GET /articles
def index
@articles = Article.all
json_response(@articles)
end
@pascalesdedy
pascalesdedy / response and exception_handler .rb
Created October 21, 2018 19:25
app/controller/concerns files - Simple Rails API server - TDD
#app/controller/concerns/response.rb
module Response
def json_response(object, status = :ok)
render json: object, status: status
end
end
#app/controller/concerns/exception_handler.rb
module ExceptionHandler
# provides the more graceful `included` method