diff --git a/Mistica/Source/Components/Checkbox/Checkbox.swift b/Mistica/Source/Components/Checkbox/Checkbox.swift index 0ed84e027..d3ddefd95 100644 --- a/Mistica/Source/Components/Checkbox/Checkbox.swift +++ b/Mistica/Source/Components/Checkbox/Checkbox.swift @@ -184,7 +184,7 @@ private extension Checkbox { imageView.layer.opacity = 1 imageView.layer.transform = CATransform3DIdentity borderView.layer.borderColor = UIColor.controlActivated.cgColor - borderView.layer.borderWidth = intrinsicContentSize.width / 2.0 + borderView.layer.borderWidth = max(bounds.width, intrinsicContentSize.width) / 2.0 } else { imageView.layer.opacity = 0 imageView.layer.transform = CATransform3DScale(imageView.layer.transform, 0.01, 0.01, 0.01) diff --git a/Mistica/Source/Components/SegmentSelector/SegmentSelector.swift b/Mistica/Source/Components/SegmentSelector/SegmentSelector.swift index b4ecc6f01..89a92c028 100644 --- a/Mistica/Source/Components/SegmentSelector/SegmentSelector.swift +++ b/Mistica/Source/Components/SegmentSelector/SegmentSelector.swift @@ -117,6 +117,10 @@ public class SegmentSelector: UIView { themeDidChange() } } + + override public var intrinsicContentSize: CGSize { + collectionView.intrinsicContentSize + } } // MARK: Public API @@ -166,7 +170,7 @@ extension SegmentSelector: UICollectionViewDataSource { // MARK: UICollectionViewDelegate extension SegmentSelector: UICollectionViewDelegate { - public func collectionView(_: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { + public func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool { // We allow selection only when the cell is not already selected. indexPath.item != selectedSegmentIndex } @@ -326,7 +330,11 @@ private extension SegmentSelector { } func reloadContent() { + let selectedSegment = self.selectedSegment collectionView.reloadData() + if let selectedSegment = selectedSegment { + select(selectedSegment) + } scrollToFirstItemIfNeeded() } diff --git a/Mistica/Tests/MisticaTests/UI/SegmentSelectorTests.swift b/Mistica/Tests/MisticaTests/UI/SegmentSelectorTests.swift new file mode 100644 index 000000000..97ffd4374 --- /dev/null +++ b/Mistica/Tests/MisticaTests/UI/SegmentSelectorTests.swift @@ -0,0 +1,43 @@ +// +// SegmentSelectorTests.swift +// +// Made with ❤️ by Novum +// +// Copyright © Telefonica. All rights reserved. +// + +@testable import Mistica +import SnapshotTesting +import XCTest + +final class SegmentSelectorTests: XCTestCase { + override func setUp() { + super.setUp() + UIView.setAnimationsEnabled(false) + + isRecording = false + } + + func testSegmentsInSegmentSelector() { + assertSnapshotForAllBrandsAndStyles( + as: .image(size: CGSize(width: 320, height: 49)), + viewBuilder: makeSegmentSelector(segments: 5, hasSelectedItem: false) + ) + } + + func testSelectedSegmentsInSegmentSelector() { + assertSnapshotForAllBrandsAndStyles( + as: .image(size: CGSize(width: 320, height: 49)), + viewBuilder: makeSegmentSelector(segments: 5, hasSelectedItem: true) + ) + } + + func makeSegmentSelector(segments: Int, hasSelectedItem: Bool) -> SegmentSelector { + let segments = (0 ..< segments).map { Segment(id: "\($0)", title: "Segment") } + let segmentSelector = SegmentSelector(segments: segments) + if hasSelectedItem, let segment = segments.first { + segmentSelector.select(segment) + } + return segmentSelector + } +} diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-dark-style.png new file mode 100644 index 000000000..aad4f17f5 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-style.png new file mode 100644 index 000000000..f136ae317 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-movistar-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-dark-style.png new file mode 100644 index 000000000..aad4f17f5 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-style.png new file mode 100644 index 000000000..0557c6ba7 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-dark-style.png new file mode 100644 index 000000000..aad4f17f5 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-style.png new file mode 100644 index 000000000..d326b871f Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-o2Classic-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-dark-style.png new file mode 100644 index 000000000..aad4f17f5 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-style.png new file mode 100644 index 000000000..b61595641 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSegmentsInSegmentSelector.with-vivo-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-dark-style.png new file mode 100644 index 000000000..19108e3fd Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-style.png new file mode 100644 index 000000000..36445a686 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-movistar-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-dark-style.png new file mode 100644 index 000000000..19108e3fd Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-style.png new file mode 100644 index 000000000..b449d409e Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-dark-style.png new file mode 100644 index 000000000..19108e3fd Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-style.png new file mode 100644 index 000000000..48120bf85 Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-o2Classic-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-dark-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-dark-style.png new file mode 100644 index 000000000..19108e3fd Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-dark-style.png differ diff --git a/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-style.png b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-style.png new file mode 100644 index 000000000..f6be0afec Binary files /dev/null and b/Mistica/Tests/MisticaTests/UI/__Snapshots__/SegmentSelectorTests/testSelectedSegmentsInSegmentSelector.with-vivo-style.png differ