summaryrefslogtreecommitdiff
path: root/tests/SomhairlesDream.Shared.Tests/FrontendContractTests.fs
blob: d961d8b0f08d89653b4aad76ff86d9ac857d5f12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module SomhairlesDream.Shared.Tests.FrontendContractTests

open System.IO
open Xunit

let private root = Path.GetFullPath(Path.Combine(__SOURCE_DIRECTORY__, "..", ".."))

let private readRelative path = File.ReadAllText(Path.Combine(root, path))

let private assertBrowserContract contents =
    Assert.Contains("/api/runs/start", contents)
    Assert.Contains("/api/runs/events?projectId=", contents)
    Assert.Contains("artifact-manifest-link", contents)
    Assert.DoesNotContain("/api/events", contents)

[<Fact>]
let ``frontend source and bundle use the selected artifact run lifecycle`` () =
    readRelative "src/SomhairlesDream.Frontend/App.fs"
    |> assertBrowserContract

    readRelative "public/App.js"
    |> assertBrowserContract

    let html = readRelative "public/index.html"
    Assert.Contains("id=\"run-start-button\"", html)
    Assert.Contains("id=\"artifact-manifest-link\"", html)

[<Fact>]
let ``solution contains every project in the artifact pipeline`` () =
    let solution = readRelative "SomhairlesDream.sln"

    [ "SomhairlesDream.Modeling"
      "SomhairlesDream.Cli"
      "SomhairlesDream.Modeling.Tests"
      "SomhairlesDream.Cli.Tests" ]
    |> List.iter (fun project -> Assert.Contains(project, solution))