Skip to content

Commit 01257b5

Browse files
committed
Write unit tests for URLValidationRule
1 parent ca29de4 commit 01257b5

1 file changed

Lines changed: 123 additions & 0 deletions

File tree

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
//
2+
// Validator
3+
// Copyright © 2025 Space Code. All rights reserved.
4+
//
5+
6+
import ValidatorCore
7+
import XCTest
8+
9+
// MARK: - URLValidationRuleTests
10+
11+
final class URLValidationRuleTests: XCTestCase {
12+
// MARK: - Properties
13+
14+
private var sut: URLValidationRule!
15+
16+
// MARK: - Setup
17+
18+
override func setUp() {
19+
super.setUp()
20+
sut = URLValidationRule(error: String.error)
21+
}
22+
23+
override func tearDown() {
24+
sut = nil
25+
super.tearDown()
26+
}
27+
28+
// MARK: - Tests
29+
30+
func test_validate_validURL_shouldReturnTrue() {
31+
// given
32+
let url = "https://google.com"
33+
34+
// when
35+
let result = sut.validate(input: url)
36+
37+
// then
38+
XCTAssertTrue(result)
39+
}
40+
41+
func test_validate_missingScheme_shouldReturnFalse() {
42+
// given
43+
let url = "google.com"
44+
45+
// when
46+
let result = sut.validate(input: url)
47+
48+
// then
49+
XCTAssertFalse(result)
50+
}
51+
52+
func test_validate_missingHost_shouldReturnFalse() {
53+
// given
54+
let url = "https://"
55+
56+
// when
57+
let result = sut.validate(input: url)
58+
59+
// then
60+
XCTAssertFalse(result)
61+
}
62+
63+
func test_validate_emptyString_shouldReturnFalse() {
64+
// given
65+
let url = ""
66+
67+
// when
68+
let result = sut.validate(input: url)
69+
70+
// then
71+
XCTAssertFalse(result)
72+
}
73+
74+
func test_validate_whitespaceString_shouldReturnFalse() {
75+
// given
76+
let url = " "
77+
78+
// when
79+
let result = sut.validate(input: url)
80+
81+
// then
82+
XCTAssertFalse(result)
83+
}
84+
85+
func test_validate_ipAddressURL_shouldReturnTrue() {
86+
// given
87+
let url = "http://192.168.0.1"
88+
89+
// when
90+
let result = sut.validate(input: url)
91+
92+
// then
93+
XCTAssertTrue(result)
94+
}
95+
96+
func test_validate_urlWithPort_shouldReturnTrue() {
97+
// given
98+
let url = "https://localhost:8080"
99+
100+
// when
101+
let result = sut.validate(input: url)
102+
103+
// then
104+
XCTAssertTrue(result)
105+
}
106+
107+
func test_validate_ftpScheme_shouldReturnTrue() {
108+
// given
109+
let url = "ftp://example.com"
110+
111+
// when
112+
let result = sut.validate(input: url)
113+
114+
// then
115+
XCTAssertTrue(result)
116+
}
117+
}
118+
119+
// MARK: Constants
120+
121+
private extension String {
122+
static let error = "URL is invalid"
123+
}

0 commit comments

Comments
 (0)