Skip to content

Commit 97758ab

Browse files
committed
Testing issue #1011
1 parent d8909ef commit 97758ab

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class CreateInterviews::V20240317161918 < Avram::Migrator::Migration::V1
2+
def migrate
3+
create table_for(Interview) do
4+
primary_key id : Int64
5+
add_timestamps
6+
add_belongs_to interviewer : User, on_delete: :cascade
7+
add_belongs_to interviewee : User, on_delete: :cascade
8+
end
9+
end
10+
11+
def rollback
12+
drop table_for(Interview)
13+
end
14+
end

spec/avram/query_associations_spec.cr

+12
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,16 @@ describe "Query associations" do
176176

177177
result.should eq(product)
178178
end
179+
180+
it "handles aliases", focus: true do
181+
interviewer = UserFactory.create(&.available_for_hire(false).name("Interviewer"))
182+
interviewee = UserFactory.create(&.available_for_hire(true).name("Interviewee"))
183+
UserFactory.create(&.available_for_hire(false).name("Employed"))
184+
InterviewFactory.create(&.interviewee(interviewee).interviewer(interviewer))
185+
186+
InterviewQuery.new
187+
.where_interviewer(UserQuery.new.available_for_hire(false))
188+
.where_interviewee(UserQuery.new.available_for_hire(true))
189+
.to_prepared_sql.should eq("nothing")
190+
end
179191
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class InterviewFactory < BaseFactory
2+
def initialize
3+
before_save do
4+
if operation.interviewer_id.value.nil?
5+
interviewer(UserFactory.create)
6+
end
7+
if operation.interviewee_id.value.nil?
8+
interviewee(UserFactory.create)
9+
end
10+
end
11+
end
12+
13+
def interviewer(u : User)
14+
interviewer_id(u.id)
15+
end
16+
17+
def interviewee(u : User)
18+
interviewee_id(u.id)
19+
end
20+
end

spec/support/models/interview.cr

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Interview < BaseModel
2+
table do
3+
belongs_to interviewer : User
4+
belongs_to interviewee : User
5+
end
6+
end
7+
8+
class InterviewQuery < Interview::BaseQuery
9+
end

0 commit comments

Comments
 (0)