Skip to content

Commit 890f24b

Browse files
authored
Merge pull request #1175 from code-corps/fix-github-record-associations
Fix GitHub record associations
2 parents ea89d8e + f5872ed commit 890f24b

File tree

5 files changed

+32
-5
lines changed

5 files changed

+32
-5
lines changed

lib/code_corps/accounts/accounts.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ defmodule CodeCorps.Accounts do
157157

158158
existing_user_ids =
159159
User
160-
|> where(github_id: ^github_id)
160+
|> where(github_id_was: ^github_id)
161161
|> select([u], u.id)
162162
|> Repo.all
163163

@@ -174,7 +174,7 @@ defmodule CodeCorps.Accounts do
174174

175175
existing_user_ids =
176176
User
177-
|> where(github_id: ^github_id)
177+
|> where(github_id_was: ^github_id)
178178
|> select([u], u.id)
179179
|> Repo.all
180180

lib/code_corps/accounts/changesets.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ defmodule CodeCorps.Accounts.Changesets do
5353
def dissociate_github_user_changeset(struct, %{} = params) do
5454
struct
5555
|> Changeset.cast(params, [:github_id, :github_id_was])
56+
|> Changeset.unique_constraint(:github_id_was)
5657
|> unique_github_constraint()
5758
end
5859

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule CodeCorps.Repo.Migrations.AddIndexForGithubIdWasToUsers do
2+
use Ecto.Migration
3+
4+
def change do
5+
create unique_index(:users, [:github_id_was])
6+
end
7+
end

priv/repo/structure.sql

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3299,6 +3299,13 @@ CREATE UNIQUE INDEX users_email_index ON users USING btree (email);
32993299
CREATE UNIQUE INDEX users_github_id_index ON users USING btree (github_id);
33003300

33013301

3302+
--
3303+
-- Name: users_github_id_was_index; Type: INDEX; Schema: public; Owner: -
3304+
--
3305+
3306+
CREATE UNIQUE INDEX users_github_id_was_index ON users USING btree (github_id_was);
3307+
3308+
33023309
--
33033310
-- Name: users_github_user_id_index; Type: INDEX; Schema: public; Owner: -
33043311
--
@@ -3868,5 +3875,5 @@ ALTER TABLE ONLY users
38683875
-- PostgreSQL database dump complete
38693876
--
38703877

3871-
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);
3878+
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);
38723879

test/lib/code_corps/accounts/accounts_test.exs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule CodeCorps.AccountsTest do
44
use CodeCorps.BackgroundProcessingCase
55
use CodeCorps.DbAccessCase
66

7-
alias CodeCorps.{Accounts, User, GitHub.TestHelpers}
7+
alias CodeCorps.{Accounts, Comment, Task, User, GitHub.TestHelpers}
88
alias Ecto.Changeset
99

1010
describe "create_from_github/1" do
@@ -66,7 +66,7 @@ defmodule CodeCorps.AccountsTest do
6666
end
6767

6868
describe "update_from_github_oauth/3" do
69-
test "updates proper user from provided payload" do
69+
test "updates proper user and associations given GitHub payload" do
7070
user = insert(:user)
7171
%{"id" => github_id} = params = TestHelpers.load_endpoint_fixture("user")
7272
token = "random_token"
@@ -75,22 +75,34 @@ defmodule CodeCorps.AccountsTest do
7575
params
7676
|> Accounts.create_from_github()
7777

78+
comment = insert(:comment, user: user_for_github_user)
79+
task = insert(:task, user: user_for_github_user)
80+
7881
{:ok, %User{} = user} =
7982
user
8083
|> Accounts.update_from_github_oauth(params, token)
8184

8285
wait_for_supervisor()
8386

8487
user_for_github_user = Repo.get(User, user_for_github_user.id)
88+
comment = Repo.get(Comment, comment.id)
89+
task = Repo.get(Task, task.id)
8590

91+
# Unsets the old user's github_id
8692
assert user_for_github_user.sign_up_context == "github"
8793
assert user_for_github_user.github_id_was == github_id
8894
refute user_for_github_user.github_id
95+
96+
# Sets the new user data
8997
assert user.id
9098
assert user.github_auth_token == token
9199
assert user.github_id == github_id
92100
assert user.sign_up_context == "default"
93101
assert user.type == "user"
102+
103+
# Changes associations
104+
assert comment.user_id == user.id
105+
assert task.user_id == user.id
94106
end
95107

96108
test "does not update their image if it already exists" do

0 commit comments

Comments
 (0)