diff --git a/swift/Tests/GildedRoseTests/ConjuredRules.swift b/swift/Tests/GildedRoseTests/ConjuredRules.swift new file mode 100644 index 00000000..3de6f60e --- /dev/null +++ b/swift/Tests/GildedRoseTests/ConjuredRules.swift @@ -0,0 +1,37 @@ +// +// ConjuredRules.swift +// GildedRose +// +// Created by Lucas van Dongen on 23/11/2020. +// + +@testable import GildedRose +import XCTest + +class ConjuredRules: XCTestCase { + private let manaCakeItem = Item(name: "Conjured Mana Cake", sellIn: 3, quality: 6) + private let differentConjuredItem = Item(name: "Conjured Different Name", sellIn: 3, quality: 6) + private let conjuredDifferentPlaceInNameItem = Item(name: "This item has been conjured", sellIn: 3, quality: 6) + private let notAConjuredItem = Item(name: "Regular Item", sellIn: 3, quality: 6) + + //- "Conjured" items degrade in Quality twice as fast as normal items + func testConjuredDegradesTwiceAsFast() { + let initialQuality = manaCakeItem.quality + let system = GildedRose(items: [manaCakeItem]) + + system.updateQuality() + XCTAssertEqual(system.items.first!.quality, initialQuality - 2) + } + + //- All items with "Conjured" in their name are considered conjured + func testAnythingConjured() { + XCTAssertTrue(differentConjuredItem.updated(hasExpectedQuality: 4)) + XCTAssertTrue(conjuredDifferentPlaceInNameItem.updated(hasExpectedQuality: 4)) + XCTAssertTrue(manaCakeItem.updated(hasExpectedQuality: 4)) + } + + //- All items that do not have "Conjured" in their name are not considered conjured + func testNonConjured() { + XCTAssertTrue(notAConjuredItem.updated(hasExpectedQuality: 5)) + } +}