func testGetProduct()

in source/UberRidesTests/ObjectMappingTests.swift [45:74]


    func testGetProduct() {
        let bundle = Bundle(for: ObjectMappingTests.self)
        if let path = bundle.path(forResource: "getProductID", ofType: "json") {
            if let jsonData = try? Data(contentsOf: URL(fileURLWithPath: path)) {
                let product = try? JSONDecoder.uberDecoder.decode(Product.self, from: jsonData)
                XCTAssertNotNil(product)
                XCTAssertEqual(product!.productID, "a1111c8c-c720-46c3-8534-2fcdd730040d")
                XCTAssertEqual(product!.name, "uberX")
                XCTAssertEqual(product!.productDescription, "THE LOW-COST UBER")
                XCTAssertEqual(product!.capacity, 4)
                XCTAssertEqual(product!.imageURL, URL(string: "http://d1a3f4spazzrp4.cloudfront.net/car-types/mono/mono-uberx.png")!)
                
                let priceDetails = product!.priceDetails
                XCTAssertNotNil(priceDetails)
                XCTAssertEqual(priceDetails!.distanceUnit, "mile")
                XCTAssertEqual(priceDetails!.costPerMinute, 0.22)
                XCTAssertEqual(priceDetails!.minimumFee, 7.0)
                XCTAssertEqual(priceDetails!.costPerDistance, 1.15)
                XCTAssertEqual(priceDetails!.baseFee, 2.0)
                XCTAssertEqual(priceDetails!.cancellationFee, 5.0)
                XCTAssertEqual(priceDetails!.currencyCode, "USD")
                
                let serviceFees = priceDetails!.serviceFees
                XCTAssertNotNil(serviceFees)
                XCTAssertEqual(serviceFees?.count, 1)
                XCTAssertEqual(serviceFees?.first?.name, "Booking fee")
                XCTAssertEqual(serviceFees?.first?.fee, 2.0)
            }
        }
    }