     }
 
     func testFeaturedSectionsAdapter() {
-        let json = getJson(from: "layout")
-
-        guard let sectionsArray = try? json["sections"].rawData() else {
-            XCTFail("Couldn't find an array of sections in layout.json")
-            fatalError()
-        }
-
-        let sections: [FeaturedSection]
-
-        do {
-            sections = try JSONDecoder().decode([FeaturedSection].self, from: sectionsArray)
-        } catch {
-            XCTFail(error.localizedDescription)
-            fatalError()
-        }
+        struct TestFixture: Decodable {
+            let sections: [FeaturedSection]
+        }
+
+        let sections = loadFixture(from: "layout", type: TestFixture.self).sections
 
         XCTAssertEqual(sections[0].order, -1)
         XCTAssertEqual(sections[0].format, FeaturedSectionFormat.curated)

        XCTAssertEqual(flattenedAssets[5].sessionId, "210")
    }

    func testLiveAssetsAdapter() {
        let json = getJSONData(from: "videos_live")

        let assets: LiveVideosWrapper

        do {
            let decoder = JSONDecoder()
            decoder.dateDecodingStrategy = .formatted(.confCoreFormatter)

            assets = try decoder.decode(LiveVideosWrapper.self, from: json)
        } catch {
            XCTFail("Couldn't find a dictionary of live sessions in videos_live.json \(error)")

            return
        }

        let sortedAssets = assets.liveAssets.sorted(by: { $0.sessionId < $1.sessionId })
        XCTAssertEqual(sortedAssets[0].assetType, SessionAssetType(rawValue: SessionAssetType.liveStreamVideo.rawValue))

    }

    func testSessionsAdapter() {
        struct TestFixture: Decodable {
            let contents: [Session]
        }

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

        XCTAssertEqual(sessions.count, 771)
        XCTAssertEqual(sessions[0].title, "Express Yourself!")
