Skip to content

Commit 8873478

Browse files
committed
Fix navigationbar + subview transluscent navigationbar test cases
1 parent 2936dd5 commit 8873478

File tree

1 file changed

+76
-26
lines changed

1 file changed

+76
-26
lines changed

Tests/iOS/PinSafeAreaTests.swift

Lines changed: 76 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -261,113 +261,163 @@ class PinSafeAreaMoreTestsSpec: QuickSpec {
261261
describe("navigationbar + subview") {
262262
it("transluscent navigationbar 1") {
263263
let mainView = viewController.mainView
264-
264+
let subViewTop = CGFloat(10)
265+
265266
mainView.layoutOffsetViewClosure = { (_ subView: UIView, _ parent: UIView) in
266-
subView.pin.top(10).left(10).size(100)
267+
subView.pin.top(subViewTop).left(10).size(100)
267268
}
268269

269270
navigationController.navigationBar.isTranslucent = true
270271
setupWindow(with: navigationController)
272+
273+
let expectedSafeAreaInsets = mainView.safeAreaInsets
274+
let expectedSubViewSafeAreaInsets = UIEdgeInsets(
275+
top: expectedSafeAreaInsets.top - subViewTop,
276+
left: .zero,
277+
bottom: .zero,
278+
right: .zero
279+
)
271280

272281
// MATCH safeAreaInsets!
273282
expect(mainView.safeAreaInsetsDidChangeCalledCount) > 0
274283
expect(mainView.subView.safeAreaInsetsDidChangeCalledCount) > 0
275284

276-
expect(mainView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
277-
expect(mainView.subView.pin.safeArea).to(equal(UIEdgeInsets(top: 34.0, left: 0.0, bottom: 0.0, right: 0.0)))
285+
expect(mainView.pin.safeArea).to(equal(expectedSafeAreaInsets))
286+
expect(mainView.subView.pin.safeArea).to(equal(expectedSubViewSafeAreaInsets))
278287
expect(mainView.subView.subViewB!.pin.safeArea).to(equal(UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)))
279288

280289
expect(mainView.subView.frame).to(equal(CGRect(x: 10, y: 10, width: 100, height: 100)))
281-
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: 34, width: 40, height: 40)))
290+
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: expectedSubViewSafeAreaInsets.top, width: 40, height: 40)))
282291
}
283292

284293
it("transluscent navigationbar 2") {
285294
let mainView = viewController.mainView
295+
let subViewTop = CGFloat(10)
296+
let subViewLeft = CGFloat(-10)
286297

287298
mainView.layoutOffsetViewClosure = { (_ subView: UIView, _ parent: UIView) in
288-
subView.pin.top(10).left(-10).size(100)
299+
subView.pin.top(subViewTop).left(subViewLeft).size(100)
289300
}
290301

291302
navigationController.navigationBar.isTranslucent = true
292303
setupWindow(with: navigationController)
304+
305+
let expectedSafeAreaInsets = mainView.safeAreaInsets
306+
let expectedSubViewSafeAreaInsets = UIEdgeInsets(
307+
top: expectedSafeAreaInsets.top - subViewTop,
308+
left: .zero,
309+
bottom: .zero,
310+
right: .zero
311+
)
293312

294313
// MATCH safeAreaInsets!
295314
expect(mainView.safeAreaInsetsDidChangeCalledCount) > 0
296315
expect(mainView.subView.safeAreaInsetsDidChangeCalledCount) > 0
297316

298-
expect(mainView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
299-
expect(mainView.subView.pin.safeArea).to(equal(UIEdgeInsets(top: 34.0, left: 0.0, bottom: 0.0, right: 0.0)))
317+
expect(mainView.pin.safeArea).to(equal(expectedSafeAreaInsets))
318+
expect(mainView.subView.pin.safeArea).to(equal(expectedSubViewSafeAreaInsets))
300319
expect(mainView.subView.subViewB!.pin.safeArea).to(equal(UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)))
301320

302-
expect(mainView.subView.frame).to(equal(CGRect(x: -10, y: 10, width: 100, height: 100)))
303-
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: 34, width: 40, height: 40)))
321+
expect(mainView.subView.frame).to(equal(CGRect(x: subViewLeft, y: subViewTop, width: 100, height: 100)))
322+
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: expectedSubViewSafeAreaInsets.top, width: 40, height: 40)))
304323
}
305324

306325
it("transluscent navigationbar 3") {
307326
let mainView = viewController.mainView
327+
let subViewTop = CGFloat(10)
328+
let subViewRight = CGFloat(10)
308329

309330
mainView.layoutOffsetViewClosure = { (_ subView: UIView, _ parent: UIView) in
310-
subView.pin.top(10).right(10).size(100)
331+
subView.pin.top(subViewTop).right(subViewRight).size(100)
311332
}
312333

313334
navigationController.navigationBar.isTranslucent = true
314335
setupWindow(with: navigationController)
336+
337+
let expectedSafeAreaInsets = mainView.safeAreaInsets
338+
let expectedSubViewSafeAreaInsets = UIEdgeInsets(
339+
top: expectedSafeAreaInsets.top - subViewTop,
340+
left: .zero,
341+
bottom: .zero,
342+
right: .zero
343+
)
315344

316345
// MATCH safeAreaInsets!
317346
expect(mainView.safeAreaInsetsDidChangeCalledCount) > 0
318347
expect(mainView.subView.safeAreaInsetsDidChangeCalledCount) > 0
319348

320-
expect(mainView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
321-
expect(mainView.subView.pin.safeArea).to(equal(UIEdgeInsets(top: 34.0, left: 0.0, bottom: 0.0, right: 0.0)))
349+
expect(mainView.pin.safeArea).to(equal(expectedSafeAreaInsets))
350+
expect(mainView.subView.pin.safeArea).to(equal(expectedSubViewSafeAreaInsets))
322351
expect(mainView.subView.subViewB!.pin.safeArea).to(equal(UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)))
323352

324353
let screenSize = mainView.frame.size
325-
expect(mainView.subView.frame).to(equal(CGRect(x: screenSize.width - 100 - 10, y: 10, width: 100, height: 100)))
326-
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: 34, width: 40, height: 40)))
354+
expect(mainView.subView.frame).to(equal(CGRect(x: screenSize.width - 100 - subViewRight, y: subViewTop, width: 100, height: 100)))
355+
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: expectedSubViewSafeAreaInsets.top, width: 40, height: 40)))
327356
}
328357

329358
it("transluscent navigationbar 4") {
330359
let mainView = viewController.mainView
331-
360+
let subViewTop = CGFloat(10)
361+
let subViewRight = CGFloat(-10)
362+
332363
mainView.layoutOffsetViewClosure = { (_ subView: UIView, _ parent: UIView) in
333-
subView.pin.top(10).right(-10).size(100)
364+
subView.pin.top(subViewTop).right(subViewRight).size(100)
334365
}
335366

336367
navigationController.navigationBar.isTranslucent = true
337368
setupWindow(with: navigationController)
369+
370+
let expectedSafeAreaInsets = mainView.safeAreaInsets
371+
let expectedSubViewSafeAreaInsets = UIEdgeInsets(
372+
top: expectedSafeAreaInsets.top - subViewTop,
373+
left: .zero,
374+
bottom: .zero,
375+
right: .zero
376+
)
338377

339378
// MATCH safeAreaInsets!
340379
expect(mainView.safeAreaInsetsDidChangeCalledCount) > 0
341380
expect(mainView.subView.safeAreaInsetsDidChangeCalledCount) > 0
342381

343-
expect(mainView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
344-
expect(mainView.subView.pin.safeArea).to(equal(UIEdgeInsets(top: 34.0, left: 0.0, bottom: 0.0, right: 0.0)))
382+
expect(mainView.pin.safeArea).to(equal(expectedSafeAreaInsets))
383+
expect(mainView.subView.pin.safeArea).to(equal(expectedSubViewSafeAreaInsets))
345384
expect(mainView.subView.subViewB!.pin.safeArea).to(equal(UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)))
346385

347386
let screenSize = mainView.frame.size
348-
expect(mainView.subView.frame).to(equal(CGRect(x: screenSize.width - 100 + 10, y: 10, width: 100, height: 100)))
349-
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: 34, width: 40, height: 40)))
387+
expect(mainView.subView.frame).to(equal(CGRect(x: screenSize.width - 100 - subViewRight, y: subViewTop, width: 100, height: 100)))
388+
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: expectedSubViewSafeAreaInsets.top, width: 40, height: 40)))
350389
}
351390

352391
it("transluscent navigationbar 5") {
353392
let mainView = viewController.mainView
393+
let subViewTop = CGFloat(-20)
394+
let subViewLeft = CGFloat(-10)
395+
354396
mainView.layoutOffsetViewClosure = { (_ subView: UIView, _ parent: UIView) in
355-
subView.pin.top(-20).left(-10).size(100)
397+
subView.pin.top(subViewTop).left(subViewLeft).size(100)
356398
}
357399

358400
navigationController.navigationBar.isTranslucent = true
359401
setupWindow(with: navigationController)
402+
403+
let expectedSafeAreaInsets = mainView.safeAreaInsets
404+
let expectedSubViewSafeAreaInsets = UIEdgeInsets(
405+
top: expectedSafeAreaInsets.top,
406+
left: .zero,
407+
bottom: .zero,
408+
right: .zero
409+
)
360410

361411
// MATCH safeAreaInsets!
362412
expect(mainView.safeAreaInsetsDidChangeCalledCount) > 0
363413
expect(mainView.subView.safeAreaInsetsDidChangeCalledCount) > 0
364414

365-
expect(mainView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
366-
expect(mainView.subView.pin.safeArea).to(equal(UIEdgeInsets(top: 44.0, left: 0.0, bottom: 0.0, right: 0.0)))
415+
expect(mainView.pin.safeArea).to(equal(expectedSafeAreaInsets))
416+
expect(mainView.subView.pin.safeArea).to(equal(expectedSubViewSafeAreaInsets))
367417
expect(mainView.subView.subViewB!.pin.safeArea).to(equal(UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)))
368418

369-
expect(mainView.subView.frame).to(equal(CGRect(x: -10, y: -20, width: 100, height: 100)))
370-
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: 44, width: 40, height: 40)))
419+
expect(mainView.subView.frame).to(equal(CGRect(x: subViewLeft, y: subViewTop, width: 100, height: 100)))
420+
expect(mainView.subView.subViewB!.frame).to(equal(CGRect(x: 0, y: expectedSubViewSafeAreaInsets.top, width: 40, height: 40)))
371421
}
372422
}
373423
}

0 commit comments

Comments
 (0)