Skip to content

Commit 674dae2

Browse files
committed
Fix a bunch of meeting schedule editor test bugs introduced by the
changes in the previous commit. - Legacy-Id: 18013
1 parent b60939a commit 674dae2

5 files changed

Lines changed: 38 additions & 32 deletions

File tree

ietf/meeting/tests_js.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ def test_edit_meeting_schedule(self):
115115
s2_element = self.driver.find_element_by_css_selector('#session{}'.format(s2.pk))
116116
s2_element.click()
117117

118-
session_info_element = self.driver.find_element_by_css_selector('.session-info-container label')
118+
session_info_element = self.driver.find_element_by_css_selector('.session-info-container .title')
119119
self.assertIn(s2.group.acronym, session_info_element.text)
120120

121121
# deselect
122122
self.driver.find_element_by_css_selector('.session-info-container').click()
123123

124-
self.assertEqual(self.driver.find_elements_by_css_selector('.session-info-container label'), [])
124+
self.assertEqual(self.driver.find_elements_by_css_selector('.session-info-container .title'), [])
125125

126126
# unschedule
127127

@@ -140,7 +140,7 @@ def test_edit_meeting_schedule(self):
140140

141141
self.driver.execute_script('!function(s){s.fn.simulateDragDrop=function(t){return this.each(function(){new s.simulateDragDrop(this,t)})},s.simulateDragDrop=function(t,a){this.options=a,this.simulateEvent(t,a)},s.extend(s.simulateDragDrop.prototype,{simulateEvent:function(t,a){var e="dragstart",n=this.createEvent(e);this.dispatchEvent(t,e,n),e="drop";var r=this.createEvent(e,{});r.dataTransfer=n.dataTransfer,this.dispatchEvent(s(a.dropTarget)[0],e,r),e="dragend";var i=this.createEvent(e,{});i.dataTransfer=n.dataTransfer,this.dispatchEvent(t,e,i)},createEvent:function(t){var a=document.createEvent("CustomEvent");return a.initCustomEvent(t,!0,!0,null),a.dataTransfer={data:{},setData:function(t,a){this.data[t]=a},getData:function(t){return this.data[t]}},a},dispatchEvent:function(t,a,e){t.dispatchEvent?t.dispatchEvent(e):t.fireEvent&&t.fireEvent("on"+a,e)}})}(jQuery);')
142142

143-
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '.unassigned-sessions'}});".format(s2.pk))
143+
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '.unassigned-sessions .drop-target'}});".format(s2.pk))
144144

145145
WebDriverWait(self.driver, 2).until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '.unassigned-sessions #session{}'.format(s2.pk))))
146146

@@ -149,30 +149,30 @@ def test_edit_meeting_schedule(self):
149149
# sorting unassigned
150150
sorted_pks = [s.pk for s in sorted([s1, s2], key=lambda s: s.group.acronym)]
151151
self.driver.find_element_by_css_selector('[name=sort_unassigned] option[value=name]').click()
152-
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions #session{} + #session{}'.format(*sorted_pks)))
152+
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions .drop-target #session{} + #session{}'.format(*sorted_pks)))
153153

154154
sorted_pks = [s.pk for s in sorted([s1, s2], key=lambda s: (s.group.parent.acronym, s.group.acronym))]
155155
self.driver.find_element_by_css_selector('[name=sort_unassigned] option[value=parent]').click()
156-
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions #session{} + #session{}'.format(*sorted_pks)))
156+
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions .drop-target #session{} + #session{}'.format(*sorted_pks)))
157157

158158
sorted_pks = [s.pk for s in sorted([s1, s2], key=lambda s: (s.requested_duration, s.group.parent.acronym, s.group.acronym))]
159159
self.driver.find_element_by_css_selector('[name=sort_unassigned] option[value=duration]').click()
160-
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions #session{} + #session{}'.format(*sorted_pks)))
160+
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions .drop-target #session{} + #session{}'.format(*sorted_pks)))
161161

162162
sorted_pks = [s.pk for s in sorted([s1, s2], key=lambda s: (bool(s.comments), s.group.parent.acronym, s.group.acronym))]
163163
self.driver.find_element_by_css_selector('[name=sort_unassigned] option[value=comments]').click()
164-
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions #session{} + #session{}'.format(*sorted_pks)))
164+
self.assertTrue(self.driver.find_element_by_css_selector('.unassigned-sessions .drop-target #session{} + #session{}'.format(*sorted_pks)))
165165

166166
# schedule
167-
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{}'}});".format(s2.pk, slot1.pk))
167+
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{} .drop-target'}});".format(s2.pk, slot1.pk))
168168

169169
WebDriverWait(self.driver, 2).until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '#timeslot{} #session{}'.format(slot1.pk, s2.pk))))
170170

171171
assignment = SchedTimeSessAssignment.objects.get(session=s2, schedule=schedule)
172172
self.assertEqual(assignment.timeslot, slot1)
173173

174174
# reschedule
175-
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{}'}});".format(s2.pk, slot2.pk))
175+
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{} .drop-target'}});".format(s2.pk, slot2.pk))
176176

177177
WebDriverWait(self.driver, 2).until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '#timeslot{} #session{}'.format(slot2.pk, s2.pk))))
178178

@@ -193,7 +193,7 @@ def test_edit_meeting_schedule(self):
193193
self.assertTrue(constraint_element.is_displayed())
194194

195195
# current constraint violations
196-
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{}'}});".format(s1.pk, slot1.pk))
196+
self.driver.execute_script("jQuery('#session{}').simulateDragDrop({{dropTarget: '#timeslot{} .drop-target'}});".format(s1.pk, slot1.pk))
197197

198198
WebDriverWait(self.driver, 2).until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '#timeslot{} #session{}'.format(slot1.pk, s1.pk))))
199199

ietf/meeting/tests_views.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -970,7 +970,7 @@ def test_edit_meeting_schedule(self):
970970
name=ConstraintName.objects.get(slug="conflict"),
971971
)
972972

973-
p = Person.objects.all().first()
973+
p = Person.objects.order_by('pk')[1]
974974

975975
Constraint.objects.create(
976976
meeting=meeting,
@@ -1003,16 +1003,24 @@ def test_edit_meeting_schedule(self):
10031003
for s in [s1, s2]:
10041004
e = q("#session{}".format(s.pk))
10051005

1006-
# info in the movable entity
1006+
# info in the item representing the session that can be moved around
10071007
self.assertIn(s.group.acronym, e.find(".session-label").text())
10081008
if s.comments:
10091009
self.assertTrue(e.find(".comments"))
10101010
if s.attendees is not None:
10111011
self.assertIn(str(s.attendees), e.find(".attendees").text())
10121012
self.assertTrue(e.hasClass("parent-{}".format(s.group.parent.acronym)))
10131013

1014+
constraints = e.find(".constraints > span")
1015+
s_other = s2 if s == s1 else s1
1016+
self.assertEqual(len(constraints), 2)
1017+
self.assertEqual(constraints.eq(0).attr("data-sessions"), str(s_other.pk))
1018+
self.assertEqual(constraints.eq(1).attr("data-sessions"), str(s_other.pk))
1019+
self.assertEqual(constraints.find(".encircled").text(), "1" if s_other == s2 else "-1")
1020+
self.assertEqual(constraints.find(".fa-user-o").parent().text(), "1") # 1 person in the constraint
1021+
10141022
# session info for the panel
1015-
self.assertIn(str(s.requested_duration.total_seconds() / 60.0 / 60), e.find(".session-info label").text())
1023+
self.assertIn(str(round(s.requested_duration.total_seconds() / 60.0 / 60, 1)), e.find(".session-info .title").text())
10161024

10171025
event = SchedulingEvent.objects.filter(session=s).order_by("id").first()
10181026
if event:
@@ -1021,14 +1029,12 @@ def test_edit_meeting_schedule(self):
10211029
if s.comments:
10221030
self.assertIn(s.comments, e.find(".comments").text())
10231031

1024-
# constraints
1025-
constraints = e.find(".constraints > span")
1026-
s_other = s2 if s == s1 else s1
1027-
self.assertEqual(len(constraints), 2)
1028-
self.assertEqual(constraints.eq(0).attr("data-sessions"), str(s_other.pk))
1029-
self.assertEqual(constraints.eq(1).attr("data-sessions"), str(s_other.pk))
1030-
self.assertEqual(constraints.find(".encircled").text(), "1")
1031-
self.assertEqual(constraints.find(".fa-user-o").parent().text(), "1") # 1 person in the constraint
1032+
formatted_constraints = e.find(".session-info .formatted-constraints > *")
1033+
if s == s1:
1034+
self.assertIn(s_other.group.acronym, formatted_constraints.eq(0).html())
1035+
self.assertIn(p.name, formatted_constraints.eq(1).html())
1036+
elif s == s2:
1037+
self.assertIn(p.name, formatted_constraints.eq(0).html())
10321038

10331039
self.assertTrue(q("em:contains(\"You can't edit this schedule\")"))
10341040

ietf/name/fixtures/names.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5589,9 +5589,9 @@
55895589
{
55905590
"fields": {
55915591
"desc": "",
5592-
"editor_label": "(person)",
5592+
"editor_label": "(person){count}",
55935593
"name": "Person must be present",
5594-
"order": 0,
5594+
"order": 4,
55955595
"penalty": 200000,
55965596
"used": true
55975597
},
@@ -5603,7 +5603,7 @@
56035603
"desc": "",
56045604
"editor_label": "(2)",
56055605
"name": "Conflicts with (secondary)",
5606-
"order": 0,
5606+
"order": 2,
56075607
"penalty": 10000,
56085608
"used": true
56095609
},
@@ -5615,7 +5615,7 @@
56155615
"desc": "",
56165616
"editor_label": "(3)",
56175617
"name": "Conflicts with (tertiary)",
5618-
"order": 0,
5618+
"order": 3,
56195619
"penalty": 1000,
56205620
"used": true
56215621
},
@@ -5627,7 +5627,7 @@
56275627
"desc": "",
56285628
"editor_label": "(1)",
56295629
"name": "Conflicts with",
5630-
"order": 0,
5630+
"order": 1,
56315631
"penalty": 100000,
56325632
"used": true
56335633
},
@@ -5639,7 +5639,7 @@
56395639
"desc": "",
56405640
"editor_label": "time_relation",
56415641
"name": "Preference for time between sessions",
5642-
"order": 0,
5642+
"order": 6,
56435643
"penalty": 1000,
56445644
"used": true
56455645
},
@@ -5651,7 +5651,7 @@
56515651
"desc": "",
56525652
"editor_label": "timerange",
56535653
"name": "Can't meet within timerange",
5654-
"order": 0,
5654+
"order": 5,
56555655
"penalty": 100000,
56565656
"used": true
56575657
},
@@ -5663,7 +5663,7 @@
56635663
"desc": "",
56645664
"editor_label": "wg_adjacent",
56655665
"name": "Request for adjacent scheduling with another WG",
5666-
"order": 0,
5666+
"order": 7,
56675667
"penalty": 10000,
56685668
"used": true
56695669
},

ietf/static/ietf/js/edit-meeting-schedule.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ jQuery(document).ready(function () {
268268

269269
function updateAttendeesViolations() {
270270
sessions.each(function () {
271-
let roomCapacity = jQuery(this).closest(".timeline").data("roomcapacity");
271+
let roomCapacity = jQuery(this).closest(".timeslots").data("roomcapacity");
272272
if (roomCapacity && this.dataset.attendees)
273273
jQuery(this).toggleClass("too-many-attendees", +this.dataset.attendees > +roomCapacity);
274274
});
@@ -341,7 +341,7 @@ jQuery(document).ready(function () {
341341
else if (sortBy == "comments")
342342
keyFunctions = [extractComments, extractParent, extractName, extractDuration];
343343

344-
let unassignedSessionsContainer = content.find(".unassigned-sessions");
344+
let unassignedSessionsContainer = content.find(".unassigned-sessions .drop-target");
345345

346346
let sortedSessions = sortArrayWithKeyFunctions(unassignedSessionsContainer.children(".session").toArray(), keyFunctions);
347347
for (let i = 0; i < sortedSessions.length; ++i)

ietf/templates/meeting/edit_meeting_schedule_session.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
{# the JS uses this to display session information in the bottom panel #}
2727
<div class="session-info">
28-
<div>
28+
<div class="title">
2929
<strong>
3030
<span class="time pull-right"></span>
3131
{{ session.scheduling_label }}

0 commit comments

Comments
 (0)