Skip to content

Instantly share code, notes, and snippets.

View chelseatroy's full-sized avatar

Chelsea Troy chelseatroy

View GitHub Profile
@chelseatroy
chelseatroy / receipt_data_source_spec.rb
Created June 3, 2018 04:21
Switching Data Sources: Service Unit Test
require 'rails_helper'
RSpec.describe Services::ReceiptDataSource do
describe "get_receipts" do
it "makes appropriate call to canonical data service" do
@subject_under_test = Services::ReceiptDataSource.new
@subject_under_test.get_receipts
expect(WebMock).to have_requested(:get, "#{ENV['RECEIPT_ENDPOINT']}/receipts.json")
@chelseatroy
chelseatroy / receipt_data_source_spec.rb
Created June 3, 2018 04:24
Switching Data Sources: Testing Method Equivalence
require 'rails_helper'
RSpec.describe Services::ReceiptDataSource do
describe "equivalency" do
it "has all the methods present in the repository library" do
expect(
Repositories::ReceiptDataSource.instance_methods - Services::ReceiptDataSource.instance_methods
).to be_empty
end
end
@chelseatroy
chelseatroy / receipt_data_source_equivalence_spec.rb
Last active July 2, 2018 21:38
Switching Data Sources: Testing Data Equivalence
RSpec.describe ReceiptDataSourceEquivalence do
before(:suite) do
@repository_receipt_data_source ||= Repositories::ReceiptDataSource.new(environment: Rails.env)
@service_receipt_data_source ||= Services::ReceiptDataSource.new(environment: Rails.env)
@local_records = @repository_receipt_data_source.all.collect(&:id)
@api_records = @service_receipt_data_source.all.collect(&:id)
@on_records = Array(@local_records & @api_records)
end
@chelseatroy
chelseatroy / members_controller.rb
Created July 10, 2018 03:39
Combining Query Parameters and Request Bodies
class MembersController < ApplicationController
...
def index
@members = member_params.any? ? Member.where(member_params) : Member.all
json_options = params.fetch(:json_options, {})
render json: @members.as_json(HashWithIndifferentAccess.new(json_options.permit!))
end
@chelseatroy
chelseatroy / member_service.rb
Last active July 11, 2018 17:34
Combining Protocol Conventions - Request
require 'uri'
require 'net/http'
class MemberService
def get_members(filters=Hash.new)
query_params = filters.to_query
uri = URI("https://bertrandshealthinsurance.com/members?#{query_params}")
request = Net::HTTP::Get.new(uri.path, {'Content-Type' => 'application/json'})
@chelseatroy
chelseatroy / example_SOAP.xml
Last active July 31, 2018 19:13
Example SOAP
POST request to 'awesomeprogrammers.com'
<Head>
<UserName>Ada Lovelace</UserName>
</Head>
<Body>
<Action>Login</Action>
<Password>WerdToThePass</Password>
</Body>
POST request to 'awesomeprogrammers.com/sessions'
{
"userName": "Ada Lovelace",
"password":"WerdToThePass"
}
@chelseatroy
chelseatroy / example_HATEOAS.json
Last active July 31, 2018 19:54
Example HATEOAS
response to GET 'awesomeprogrammers.com/latanya_sweeney'
{
"name" : "Latanya Sweeney",
"links" : [
"summary" : {
"verb" : "GET",
"url" : "http://latanyasweeney.org",
"authenticate" : false
},
@chelseatroy
chelseatroy / models.py
Created August 28, 2018 16:32
Example of Giant Conditional in Django Model
from __future__ import unicode_literals
from django.conf import settings
from django.db import models
from django.utils import timezone
import numpy as np
from calendar import Calendar
from charts import HeatMap, PieChart
@chelseatroy
chelseatroy / views.py
Created August 28, 2018 16:42
Example of Calling Giant Conditional in View
from __future__ import unicode_literals
from django.shortcuts import render
from models import Visualization
from exceptions import IncompleteDataException
from .forms import VisualizationForm
from django.contrib.auth.decorators import login_required
@login_required
def transform(request):