Skip to content

Commit 7f985d2

Browse files
authored
Merge pull request code-corps#310 from mitchellhenke/not_null_constraints
Not null constraints
2 parents 6c1172c + 5e6b235 commit 7f985d2

4 files changed

Lines changed: 35 additions & 3 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
defmodule CodeCorps.Repo.Migrations.AddNotNullConstraints do
2+
use Ecto.Migration
3+
4+
def up do
5+
execute "ALTER TABLE comments ALTER COLUMN user_id SET NOT NULL, ALTER COLUMN task_id SET NOT NULL"
6+
execute "ALTER TABLE organizations ALTER COLUMN name SET NOT NULL, ALTER COLUMN description SET NOT NULL, ALTER COLUMN slug SET NOT NULL"
7+
execute "ALTER TABLE previews ALTER COLUMN user_id SET NOT NULL"
8+
execute "ALTER TABLE project_skills ALTER COLUMN project_id SET NOT NULL, ALTER COLUMN skill_id SET NOT NULL"
9+
execute "ALTER TABLE projects ALTER COLUMN organization_id SET NOT NULL"
10+
execute "ALTER TABLE role_skills ALTER COLUMN role_id SET NOT NULL, ALTER COLUMN skill_id SET NOT NULL"
11+
execute "ALTER TABLE slugged_routes ALTER COLUMN slug SET NOT NULL"
12+
execute "ALTER TABLE tasks ALTER COLUMN title SET NOT NULL, ALTER COLUMN state SET NOT NULL"
13+
execute "ALTER TABLE user_categories ALTER COLUMN user_id SET NOT NULL, ALTER COLUMN category_id SET NOT NULL"
14+
execute "ALTER TABLE user_roles ALTER COLUMN user_id SET NOT NULL, ALTER COLUMN role_id SET NOT NULL"
15+
execute "ALTER TABLE user_skills ALTER COLUMN user_id SET NOT NULL, ALTER COLUMN skill_id SET NOT NULL"
16+
end
17+
18+
def down do
19+
execute "ALTER TABLE comments ALTER COLUMN user_id DROP NOT NULL, ALTER COLUMN task_id DROP NOT NULL"
20+
execute "ALTER TABLE organizations ALTER COLUMN name DROP NOT NULL, ALTER COLUMN description DROP NOT NULL, ALTER COLUMN slug DROP NOT NULL"
21+
execute "ALTER TABLE previews ALTER COLUMN user_id DROP NOT NULL"
22+
execute "ALTER TABLE project_skills ALTER COLUMN project_id DROP NOT NULL, ALTER COLUMN skill_id DROP NOT NULL"
23+
execute "ALTER TABLE projects ALTER COLUMN organization_id DROP NOT NULL"
24+
execute "ALTER TABLE role_skills ALTER COLUMN role_id DROP NOT NULL, ALTER COLUMN skill_id DROP NOT NULL"
25+
execute "ALTER TABLE slugged_routes ALTER COLUMN slug DROP NOT NULL"
26+
execute "ALTER TABLE tasks ALTER COLUMN title DROP NOT NULL, ALTER COLUMN state DROP NOT NULL"
27+
execute "ALTER TABLE tasks ALTER COLUMN user_id DROP NOT NULL, ALTER COLUMN category_id DROP NOT NULL"
28+
execute "ALTER TABLE user_roles ALTER COLUMN user_id DROP NOT NULL, ALTER COLUMN role_id DROP NOT NULL"
29+
execute "ALTER TABLE user_skills ALTER COLUMN user_id DROP NOT NULL, ALTER COLUMN skill_id DROP NOT NULL"
30+
end
31+
end

test/controllers/project_skill_controller_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ defmodule CodeCorps.ProjectSkillControllerTest do
125125
describe "delete" do
126126
@tag authenticated: :admin
127127
test "deletes chosen resource", %{conn: conn} do
128-
project_skill = Repo.insert! %ProjectSkill{}
128+
project_skill = insert(:project_skill)
129129
path = conn |> project_skill_path(:delete, project_skill)
130130
assert conn |> delete(path) |> response(204)
131131
refute Repo.get(ProjectSkill, project_skill.id)

test/models/project_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ defmodule CodeCorps.ProjectTest do
4949
end
5050

5151
test "validates slug is unique" do
52-
insert(:project, slug: "used-slug")
53-
changeset = Project.changeset(%Project{}, %{title: "Used Slug"})
52+
project = insert(:project, slug: "used-slug")
53+
changeset = Project.changeset(%Project{organization_id: project.organization_id}, %{title: "Used Slug"})
5454

5555
{result, changeset} = Repo.insert(changeset)
5656
{message, _} = changeset.errors[:slug]

test/support/factories.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ defmodule CodeCorps.Factories do
2222
def organization_factory do
2323
%CodeCorps.Organization{
2424
name: sequence(:username, &"Organization #{&1}"),
25+
slug: sequence(:slug, &"organization-#{&1}"),
2526
description: sequence(:email, &"Description of organization #{&1}"),
2627
}
2728
end

0 commit comments

Comments
 (0)