         XCTAssertEqual(instances[2].endTime, dateTimeFormatter.date(from: "2017-06-08T18:00:00-07:00"))
     }
 
-    func testNewsAndPhotoAdapters() {
-        let json = getJson(from: "news")
-
-        guard let newsArray = try? json["items"].rawData() else {
-            XCTFail("Couldn't find an array of items in news.json")
-            fatalError()
-        }
-
-        let items: [NewsItem]
-
-        do {
-            items = Array(try JSONDecoder().decode(ConditionallyDecodableCollection<NewsItem>.self, from: newsArray))
-        } catch {
-            XCTFail(error.localizedDescription)
-            fatalError()
-        }
+    func testNewsAndPhotoAdapters() throws {
+        struct TestFixture: Decodable {
+            let items: ConditionallyDecodableCollection<NewsItem>
+        }
+
+        let items = Array(loadFixture(from: "news", type: TestFixture.self).items)
 
         XCTAssertEqual(items.count, 16)
 

    }

    func testFocusesAdapter() {
        let json = getJson(from: "sessions")

        guard let focusesArray = try? json["response"]["sessions"][0]["focus"].rawData() else {
            XCTFail("Couldn't find a session in sessions.json with an array of focuses")
            fatalError()
        }

        guard let focuses = try? JSONDecoder().decode([Focus].self, from: focusesArray) else {
            XCTFail("Couldn't find a session in sessions.json with an array of focuses")
            fatalError()
        }

        XCTAssertEqual(focuses.count, 3)
        XCTAssertEqual(focuses.map({ $0.name }), [

    }

    func testSessionInstancesAdapter() {
        struct TestFixture: Decodable {
            let contents: ConditionallyDecodableCollection<SessionInstance>
        }

        let instances = loadFixture(from: "contents", type: TestFixture.self).contents

        XCTAssertEqual(instances.count, 307)

