Skip to content
This repository has been archived by the owner on Oct 21, 2019. It is now read-only.

Commit

Permalink
Merge 6a6a9c9 into 5992633
Browse files Browse the repository at this point in the history
  • Loading branch information
bobheadxi committed Jun 17, 2018
2 parents 5992633 + 6a6a9c9 commit 63fa744
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 8 deletions.
13 changes: 11 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@ env:
secure: mFPx3xxBJEl6JLz+135oTxmjd/iBnf+GbrvrvzYmIav/2SgS6mlUchSNgU/ru4v/PFZNi5UcZ2iuZoJ/S4cautuaQUfxUcb6c8kSTmmnGOxNusvPmmgr/FsIFJ+QKabA4jsO3PdSgm0ZiHCfFop2dohofdJEGZRFrCvMJmvPzwTWPVlDSuyBlFsS19pEbzPZJsx9EtA9G4dh60LASCQDcO+GgafOBn9gTYjHuNxWqbQEeT02HpgRCxSMAOK5aEuQIl3E5MtatFH/LszH9543VEj7zyo+sqqd5kPECLq78gpebl57kcnqlVnJglZd7/aM0NSDWto1eIR6k0IV/KKcBYhXeITcXjmpoBAz3JU217O8ouPCwvLcvZ1AwZytn+odinrcsRpwpNu9osuWoCYeJ/1QQg5IHp4l1VK4FdJ8P79wBV2r16ueCtj0oF+OhcxXT5WsCAfzpZCOwKdlYA97oNy563cbQ98I7e03GV2F/1Oq25Vvqa74yFCG93vEdjgHOsVD/eoAiUppLT7GnITt1Esa3+WuwQiiN0X2BKjU/1NVrLo/mmW05D5Onzgajst2GFcebCLzpy13zzZrdPnnbMI/bOpJ3PfYe0UZ4S7l1EmIUApeGljF4+78zegs1WYbuNvLSdojYLSUbhIDgdBS1MNmDs9KCjTFGzRsr3LEE4g=

before_install:
- go get -u github.com/mattn/goveralls
- go get -u github.com/golang/dep/cmd/dep
- go get github.com/mattn/goveralls
- go get github.com/golang/dep/cmd/dep

install:
- dep ensure

services:
- postgresql

before_script:
- psql -c 'create database rocket_test_db;' -U postgres
- psql -d rocket_test_db -a -f ./schema/tables.sql

script:
- go test -race -coverprofile=coverage.out ./...
- goveralls -coverprofile=coverage.out -service=travis-ci -repotoken "$COVERALLS_TOKEN"
Expand Down
16 changes: 13 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,21 +1,31 @@
.PHONY: deps clean rocket test

all: rocket

.PHONY: rocket
rocket:
go install

.PHONY: deps
deps:
glide install

.PHONY: clean
clean:
rm rocket
pg_ctl -D /usr/local/var/postgres stop -s -m fast

.PHONY: test
test:
go test ./... -cover

# Sets up a local database for testing
.PHONY: mock-db
mock-db:
sh mock_db.sh

.PHONY: docker
docker:
docker-compose up -d

.PHONY: build
build:
docker-compose up -d --build rocket
docker-compose up -d --build rocket
30 changes: 30 additions & 0 deletions data/dal_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package data

import (
"os"
"testing"

"github.com/stretchr/testify/assert"
"github.com/ubclaunchpad/rocket/config"
)

func newTestDBConnection() *DAL {
cfg := &config.Config{
PostgresHost: "localhost",
PostgresPort: "5432",
PostgresDatabase: "rocket_test_db",
}
if os.Getenv("TRAVIS") == "true" {
cfg.PostgresUser = "postgres"
} else {
cfg.PostgresUser = "rocket_test"
}
return New(cfg)
}

func TestNewDAL(t *testing.T) {
dal := newTestDBConnection()
defer dal.Close()
err := dal.Ping()
assert.Nil(t, err)
}
46 changes: 46 additions & 0 deletions data/member_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package data

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/ubclaunchpad/rocket/model"
)

func TestMemberCreateGetUpdateRemove(t *testing.T) {
dal := newTestDBConnection()
defer dal.Close()

// Create a new member
member := &model.Member{
SlackID: "1234",
Name: "Big Bruno",
}
err := dal.CreateMember(member)
assert.Nil(t, err)

// Get existing member
memberGet := &model.Member{SlackID: "1234"}
err = dal.GetMemberBySlackID(memberGet)
assert.Nil(t, err)
assert.Equal(t, member.Name, memberGet.Name)

// Update existing member
memberUpdated := &model.Member{
SlackID: "1234",
Name: "Little Bruno",
Position: "A REAL GUY",
}
err = dal.UpdateMember(memberUpdated)
assert.Nil(t, err)
err = dal.GetMemberBySlackID(memberGet)
assert.Nil(t, err)
assert.Equal(t, memberUpdated.Name, memberGet.Name)
assert.Equal(t, memberUpdated.Position, memberGet.Position)

// Delete existing member
err = dal.DeleteMember(&model.Member{SlackID: "1234"})
assert.Nil(t, err)
err = dal.GetMemberBySlackID(&model.Member{SlackID: "1234"})
assert.NotNil(t, err)
}
26 changes: 26 additions & 0 deletions mock_db.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# This script handles local database creation to make testing easier.
# Run with `make db`

postgres -V
if [ "$?" -gt "0" ]; then
echo "MAKE: Postgres not installed!"
exit 1
fi

echo "MAKE: Killing existing postgres processes..."
pg_ctl -D /usr/local/var/postgres stop -s -m fast
pg_ctl -D /usr/local/var/postgres start
while true; do
pg_ctl -D /usr/local/var/postgres status
if [ "$?" -gt "0" ]; then
echo "MAKE: Waiting for postgres to start..."
sleep 3
else
break
fi
done

createuser -s rocket_test
createdb rocket_test_db
psql -d rocket_test_db -a -f ./schema/tables.sql
echo "MAKE: Local database ready to go!"
6 changes: 3 additions & 3 deletions schema/tables.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DROP TABLE IF EXISTS members;
DROP TABLE IF EXISTS members CASCADE;
CREATE TABLE members (
slack_id TEXT PRIMARY KEY,
name TEXT,
Expand All @@ -13,15 +13,15 @@ CREATE TABLE members (
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT (now() at time zone 'utc')
);

DROP TABLE IF EXISTS teams;
DROP TABLE IF EXISTS teams CASCADE;
CREATE TABLE teams (
name TEXT UNIQUE,
github_team_id INTEGER PRIMARY KEY,
platform TEXT,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT (now() at time zone 'utc')
);

DROP TABLE IF EXISTS team_members;
DROP TABLE IF EXISTS team_members CASCADE;
CREATE TABLE team_members (
team_github_team_id INTEGER REFERENCES teams(github_team_id) ON DELETE CASCADE,
member_slack_id TEXT REFERENCES members(slack_id) ON DELETE CASCADE,
Expand Down

0 comments on commit 63fa744

Please sign in to comment.