Skip to content

Instantly share code, notes, and snippets.

@seandearnaley
seandearnaley / index.ts
Last active February 1, 2020 23:09
BrainStrike Server index.ts
import "reflect-metadata";
import express = require("express");
import { config as setupDotEnv } from "dotenv";
import {
createConnection,
Connection,
Repository,
ConnectionOptions
} from "typeorm";
import { Card, Category } from "./entity";
@seandearnaley
seandearnaley / card.ts
Created January 27, 2020 20:31
BrainStrike CardAPI DataSource
import { Card } from "../entity";
import { CardInput, CardsUpdatedResponse } from "../generated/graphql";
import { ApolloContext } from "../types/context";
import { DataSource, DataSourceConfig } from "apollo-datasource";
import { DataSourceRepos } from "../";
export class CardAPI extends DataSource {
context!: ApolloContext;
repos: DataSourceRepos;
constructor({ repos }: { repos: DataSourceRepos }) {
@seandearnaley
seandearnaley / card.ts
Last active February 1, 2020 23:00
BrainStrike CardAPI Unit Test
import { CardAPI } from "../card";
import { mockRepos, mockContext } from "../../__tests__/__utils";
import {
mockCardsResponse,
mockFirstCardResponse,
mockFirstCardResponseId,
mockReturnCard,
mockCardInput,
mockSuccessfulAddResponse,
@seandearnaley
seandearnaley / integration.ts
Last active February 1, 2020 22:59
BrainStrike Server Integration Test
import { createTestClient } from "apollo-server-testing";
import gql from "graphql-tag";
import {
constructTestServer,
createTestingConnection,
Connection
} from "./__utils";
import {
mockFirstCardResponse,
mockFirstCardResponseId
@seandearnaley
seandearnaley / e2e.ts
Last active February 1, 2020 22:57
BrainStrike Server End-2-End Test
import {
GraphQLRequest,
Observable,
FetchResult,
toPromise
} from "apollo-link";
import {
startTestServer,
constructTestServer,
@seandearnaley
seandearnaley / nodejs-server-test.yml
Last active February 1, 2020 22:57
GitHub Action Node Server Test CI
name: Node Server Test CI
on:
push:
paths:
- 'server/**'
jobs:
build:
runs-on: ubuntu-latest
@seandearnaley
seandearnaley / .env.example
Created January 27, 2020 20:40
BrainStrike Server Environment Variables
NODE_ENV=development
NODE_HOST=localhost
NODE_PORT=4000
NODE_HTTPS=false
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=test
POSTGRES_PASSWORD=test
PGADMIN_DEFAULT_EMAIL=name@domain.com
PGADMIN_DEFAULT_PASSWORD=yourpassword
@seandearnaley
seandearnaley / create-multiple-postgresql-databases.sh
Created January 27, 2020 20:41
Create Multiple PostGres Databases Script
#!/bin/bash
set -e
set -u
function create_user_and_database() {
local database=$1
echo " Creating user and database '$database'"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER $database;
@seandearnaley
seandearnaley / docker-compose.yml
Last active January 27, 2020 20:45
BrainStrike Docker Compose for Postgres
version: '3.1'
services:
postgres:
image: 'postgres'
ports:
- '5432:5432'
volumes:
- ./pg-init-scripts:/docker-entrypoint-initdb.d
environment:
POSTGRES_MULTIPLE_DATABASES: brainstrike,brainstrike_test
import { createTestingConnection } from "./index";
module.exports = async (): Promise<void> => {
// code goes here
const connection = await createTestingConnection();
await connection.dropDatabase();
console.log("dropped test db");
await connection.synchronize(true);
console.log("sync test db");
await connection.runMigrations();