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 / request_spec_helper.rb
Last active October 21, 2018 20:20
spec/support/request_spec_helper.rb - used for creating simple CRUD TDD
module RequestSpecHelper
# Parse JSON response to ruby hash
def json
JSON.parse(response.body)
end
end
@pascalesdedy
pascalesdedy / rails_helper.rb
Last active October 21, 2018 20:18
spec/rails_helper.rb - used for creating simple CRUD TDD
# spec/rails_helper.rb
# [...]
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
# [...]
RSpec.configuration do |config|
# [...]
config.include RequestSpecHelper, type: :request
# [...]
end
@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