Skip to content

Commit

Permalink
Fix project website and remove some unnecessary columns
Browse files Browse the repository at this point in the history
  • Loading branch information
joshsmith committed Nov 23, 2017
1 parent d721dc7 commit 4adedcd
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 48 deletions.
9 changes: 3 additions & 6 deletions lib/code_corps/model/project.ex
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ defmodule CodeCorps.Project do
field :title, :string
field :total_monthly_donated, :integer, default: 0
field :website, :string
field :github_repo, :string
field :github_owner, :string

belongs_to :organization, CodeCorps.Organization

Expand All @@ -53,7 +51,9 @@ defmodule CodeCorps.Project do

def changeset(struct, params) do
struct
|> cast(params, [:title, :description, :long_description_markdown, :cloudinary_public_id, :default_color])
|> cast(params, [:title, :description, :long_description_markdown, :cloudinary_public_id, :default_color, :website])
|> prefix_url(:website)
|> validate_format(:website, CodeCorps.Helpers.URL.valid_format())
|> validate_required(:title)
|> generate_slug(:title, :slug)
|> validate_slug(:slug)
Expand Down Expand Up @@ -83,9 +83,6 @@ defmodule CodeCorps.Project do
def update_changeset(struct, params) do
struct
|> changeset(params)
|> cast(params, [:website])
|> prefix_url(:website)
|> validate_format(:website, CodeCorps.Helpers.URL.valid_format())
end

def update_total_changeset(struct, params) do
Expand Down
2 changes: 1 addition & 1 deletion lib/code_corps_web/controllers/project_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ defmodule CodeCorpsWeb.ProjectController do
with %Project{} = project <- Project.Query.find(params),
%User{} = current_user <- conn |> Guardian.Plug.current_resource,
{:ok, :authorized} <- current_user |> Policy.authorize(:update, project),
{:ok, %Project{} = project} <- project |> Project.changeset(params) |> Repo.update,
{:ok, %Project{} = project} <- project |> Project.update_changeset(params) |> Repo.update,
project <- preload(project)
do
conn |> render("show.json-api", data: project)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
defmodule CodeCorps.Repo.Migrations.RemoveGithubRepoAndOwnerFromProject do
use Ecto.Migration

def change do
alter table(:projects) do
remove(:github_repo)
remove(:github_owner)
end
end
end
4 changes: 1 addition & 3 deletions priv/repo/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -779,8 +779,6 @@ CREATE TABLE projects (
default_color character varying(255),
website character varying(255),
should_link_externally boolean DEFAULT false,
github_repo character varying(255),
github_owner character varying(255),
CONSTRAINT set_long_description_markdown_if_approved CHECK (((long_description_markdown IS NOT NULL) OR (approved = false)))
);

Expand Down Expand Up @@ -3885,5 +3883,5 @@ ALTER TABLE ONLY users
-- PostgreSQL database dump complete
--

INSERT INTO "schema_migrations" (version) VALUES (20160723215749), (20160804000000), (20160804001111), (20160805132301), (20160805203929), (20160808143454), (20160809214736), (20160810124357), (20160815125009), (20160815143002), (20160816020347), (20160816034021), (20160817220118), (20160818000944), (20160818132546), (20160820113856), (20160820164905), (20160822002438), (20160822004056), (20160822011624), (20160822020401), (20160822044612), (20160830081224), (20160830224802), (20160911233738), (20160912002705), (20160912145957), (20160918003206), (20160928232404), (20161003185918), (20161019090945), (20161019110737), (20161020144622), (20161021131026), (20161031001615), (20161121005339), (20161121014050), (20161121043941), (20161121045709), (20161122015942), (20161123081114), (20161123150943), (20161124085742), (20161125200620), (20161126045705), (20161127054559), (20161205024856), (20161207112519), (20161209192504), (20161212005641), (20161214005935), (20161215052051), (20161216051447), (20161218005913), (20161219160401), (20161219163909), (20161220141753), (20161221085759), (20161226213600), (20161231063614), (20170102130055), (20170102181053), (20170104113708), (20170104212623), (20170104235423), (20170106013143), (20170115035159), (20170115230549), (20170121014100), (20170131234029), (20170201014901), (20170201025454), (20170201035458), (20170201183258), (20170220032224), (20170224233516), (20170226050552), (20170228085250), (20170308214128), (20170308220713), (20170308222552), (20170313130611), (20170318032449), (20170318082740), (20170324194827), (20170424215355), (20170501225441), (20170505224222), (20170526095401), (20170602000208), (20170622205732), (20170626231059), (20170628092119), (20170628213609), (20170629183404), (20170630140136), (20170706132431), (20170707213648), (20170711122252), (20170717092127), (20170725060612), (20170727052644), (20170731130121), (20170814131722), (20170913114958), (20170921014405), (20170925214512), (20170925230419), (20170926134646), (20170927100300), (20170928234412), (20171003134956), (20171003225853), (20171006063358), (20171006161407), (20171012215106), (20171012221231), (20171016125229), (20171016125516), (20171016223356), (20171016235656), (20171017235433), (20171019191035), (20171025184225), (20171026010933), (20171027061833), (20171028011642), (20171028173508), (20171030182857), (20171031232023), (20171031234356), (20171101023309), (20171104013543), (20171106045740), (20171106050209), (20171106103153), (20171106200036), (20171109231538), (20171110001134), (20171114010851), (20171114033357), (20171114225214), (20171114225713), (20171114232534), (20171115201624), (20171115225358), (20171119004204), (20171121075226), (20171121144138);
INSERT INTO "schema_migrations" (version) VALUES (20160723215749), (20160804000000), (20160804001111), (20160805132301), (20160805203929), (20160808143454), (20160809214736), (20160810124357), (20160815125009), (20160815143002), (20160816020347), (20160816034021), (20160817220118), (20160818000944), (20160818132546), (20160820113856), (20160820164905), (20160822002438), (20160822004056), (20160822011624), (20160822020401), (20160822044612), (20160830081224), (20160830224802), (20160911233738), (20160912002705), (20160912145957), (20160918003206), (20160928232404), (20161003185918), (20161019090945), (20161019110737), (20161020144622), (20161021131026), (20161031001615), (20161121005339), (20161121014050), (20161121043941), (20161121045709), (20161122015942), (20161123081114), (20161123150943), (20161124085742), (20161125200620), (20161126045705), (20161127054559), (20161205024856), (20161207112519), (20161209192504), (20161212005641), (20161214005935), (20161215052051), (20161216051447), (20161218005913), (20161219160401), (20161219163909), (20161220141753), (20161221085759), (20161226213600), (20161231063614), (20170102130055), (20170102181053), (20170104113708), (20170104212623), (20170104235423), (20170106013143), (20170115035159), (20170115230549), (20170121014100), (20170131234029), (20170201014901), (20170201025454), (20170201035458), (20170201183258), (20170220032224), (20170224233516), (20170226050552), (20170228085250), (20170308214128), (20170308220713), (20170308222552), (20170313130611), (20170318032449), (20170318082740), (20170324194827), (20170424215355), (20170501225441), (20170505224222), (20170526095401), (20170602000208), (20170622205732), (20170626231059), (20170628092119), (20170628213609), (20170629183404), (20170630140136), (20170706132431), (20170707213648), (20170711122252), (20170717092127), (20170725060612), (20170727052644), (20170731130121), (20170814131722), (20170913114958), (20170921014405), (20170925214512), (20170925230419), (20170926134646), (20170927100300), (20170928234412), (20171003134956), (20171003225853), (20171006063358), (20171006161407), (20171012215106), (20171012221231), (20171016125229), (20171016125516), (20171016223356), (20171016235656), (20171017235433), (20171019191035), (20171025184225), (20171026010933), (20171027061833), (20171028011642), (20171028173508), (20171030182857), (20171031232023), (20171031234356), (20171101023309), (20171104013543), (20171106045740), (20171106050209), (20171106103153), (20171106200036), (20171109231538), (20171110001134), (20171114010851), (20171114033357), (20171114225214), (20171114225713), (20171114232534), (20171115201624), (20171115225358), (20171119004204), (20171121075226), (20171121144138), (20171123065902);

72 changes: 36 additions & 36 deletions test/lib/code_corps/model/project_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,42 @@ defmodule CodeCorps.ProjectTest do
{_, changeset} = Repo.insert(changeset)
assert_error_message(changeset, :slug, "has already been taken")
end

test "requires :website to be in proper format" do
project = %Project{}
attrs = %{website: "bad <> website"}

changeset = Project.changeset(project, attrs)

assert_error_message(changeset, :website, "has invalid format")
end

test "doesn't require :website to be part of the changes" do
project = %Project{}
attrs = %{}

changeset = Project.changeset(project, attrs)

refute Keyword.has_key?(changeset.errors, :website)
end

test "prefixes website with 'http://' if there is no prefix" do
project = %Project{website: "https://first.com"}
attrs = %{website: "example.com"}

changeset = Project.changeset(project, attrs)

assert changeset.changes.website == "http://example.com"
end

test "doesn't make a change to the url when there is no param for it" do
project = %Project{website: "https://first.com"}
attrs = %{}

changeset = Project.changeset(project, attrs)

refute Map.has_key?(changeset.changes, :website)
end
end

describe "create_changeset/3" do
Expand Down Expand Up @@ -92,41 +128,5 @@ defmodule CodeCorps.ProjectTest do
changeset = Project.update_changeset(%Project{}, %{organization_id: 1})
assert :error == changeset |> fetch_change(:organization_id)
end

test "requires :website to be in proper format" do
project = %Project{}
attrs = %{website: "bad <> website"}

changeset = Project.update_changeset(project, attrs)

assert_error_message(changeset, :website, "has invalid format")
end

test "doesn't require :website to be part of the changes" do
project = %Project{}
attrs = %{}

changeset = Project.update_changeset(project, attrs)

refute Keyword.has_key?(changeset.errors, :website)
end

test "prefixes website with 'http://' if there is no prefix" do
project = %Project{website: "https://first.com"}
attrs = %{website: "example.com"}

changeset = Project.update_changeset(project, attrs)

assert changeset.changes.website == "http://example.com"
end

test "doesn't make a change to the url when there is no param for it" do
project = %Project{website: "https://first.com"}
attrs = %{}

changeset = Project.update_changeset(project, attrs)

refute Map.has_key?(changeset.changes, :website)
end
end
end
2 changes: 0 additions & 2 deletions test/support/factories.ex
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,6 @@ defmodule CodeCorps.Factories do
slug: sequence(:slug, &"project-#{&1}"),
title: sequence(:title, &"Project #{&1}"),
website: sequence(:website, &"http://test-#{&1}.com"),
github_repo: nil,
github_owner: nil,

organization: build(:organization)
}
Expand Down

0 comments on commit 4adedcd

Please sign in to comment.