Skip to content

Commit

Permalink
Added more Owner tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
ScottArbeit committed Aug 17, 2024
1 parent 9cfdcd3 commit 1cd4f19
Show file tree
Hide file tree
Showing 2 changed files with 159 additions and 1 deletion.
157 changes: 157 additions & 0 deletions src/Grace.Server.Tests/Owner.Server.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,160 @@ type Owner() =
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage DescriptionIsRequired))
}

[<Test>]
[<Repeat(1)>]
member public this.SetDescriptionWithEmptyOwnerId() =
task {
let parameters = Parameters.Owner.SetOwnerDescriptionParameters()
parameters.Description <- $"Description set at {getCurrentInstantGeneral ()}."
parameters.OwnerId <- ""
let! response = Client.PostAsync("/owner/setDescription", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! responseStream = response.Content.ReadAsStreamAsync()
let! error = deserializeAsync<GraceError> responseStream
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage EitherOwnerIdOrOwnerNameRequired))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityToVisible() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- "Visible"
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
response.EnsureSuccessStatusCode() |> ignore
let! returnValue = deserializeContent<GraceReturnValue<string>> response
Assert.That(returnValue.Properties[nameof (OwnerId)], Is.EqualTo(ownerId))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityToNotVisible() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- "NotVisible"
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
response.EnsureSuccessStatusCode() |> ignore
let! returnValue = deserializeContent<GraceReturnValue<string>> response
Assert.That(returnValue.Properties[nameof (OwnerId)], Is.EqualTo(ownerId))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityToInvalidVisibility() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- "Not a valid search visibility"
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage InvalidSearchVisibility))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityToEmptyVisibility() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- String.Empty
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage SearchVisibilityIsRequired))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityWithInvalidOwnerId() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- "Visible"
parameters.OwnerId <- "this is not an owner id"
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage InvalidOwnerId))
}

[<Test>]
[<Repeat(1)>]
member public this.SetSearchVisibilityWithEmptyOwnerId() =
task {
let parameters = Parameters.Owner.SetOwnerSearchVisibilityParameters()
parameters.SearchVisibility <- "Visible"
parameters.OwnerId <- ""
let! response = Client.PostAsync("/owner/setSearchVisibility", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! responseStream = response.Content.ReadAsStreamAsync()
let! error = deserializeAsync<GraceError> responseStream
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage EitherOwnerIdOrOwnerNameRequired))
}

[<Test>]
[<Repeat(1)>]
member public this.SetNameToValidName() =
task {
let parameters = Parameters.Owner.SetOwnerNameParameters()
parameters.NewName <- $"NewOwnerName{rnd.NextInt64()}"
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setName", createJsonContent parameters)
response.EnsureSuccessStatusCode() |> ignore
let! returnValue = deserializeContent<GraceReturnValue<string>> response
Assert.That(returnValue.Properties[nameof (OwnerId)], Is.EqualTo(ownerId))
}

[<Test>]
[<Repeat(1)>]
member public this.SetNameToInvalidName() =
task {
let parameters = Parameters.Owner.SetOwnerNameParameters()
parameters.NewName <- "doesn't match Regex"
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setName", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage InvalidOwnerName))
}

[<Test>]
[<Repeat(1)>]
member public this.SetNameToEmptyName() =
task {
let parameters = Parameters.Owner.SetOwnerNameParameters()
parameters.NewName <- ""
parameters.OwnerId <- ownerId
let! response = Client.PostAsync("/owner/setName", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage OwnerNameIsRequired))
}

[<Test>]
[<Repeat(1)>]
member public this.SetNameWithInvalidOwnerId() =
task {
let parameters = Parameters.Owner.SetOwnerNameParameters()
parameters.NewName <- $"NewOwnerName{rnd.NextInt64()}"
parameters.OwnerId <- "this is not an owner id"
let! response = Client.PostAsync("/owner/setName", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage InvalidOwnerId))
}

[<Test>]
[<Repeat(1)>]
member public this.SetNameWithEmptyOwnerId() =
task {
let parameters = Parameters.Owner.SetOwnerNameParameters()
parameters.NewName <- $"NewOwnerName{rnd.NextInt64()}"
parameters.OwnerId <- ""
let! response = Client.PostAsync("/owner/setName", createJsonContent parameters)
Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest))
let! error = deserializeContent<GraceError> response
Assert.That(error.Error, Is.EqualTo(OwnerError.getErrorMessage EitherOwnerIdOrOwnerNameRequired))
}
3 changes: 2 additions & 1 deletion src/Grace.Server/Owner.Server.fs
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,8 @@ module Owner =
fun (next: HttpFunc) (context: HttpContext) ->
task {
let validations (parameters: SetOwnerSearchVisibilityParameters) =
[| DiscriminatedUnion.isMemberOf<SearchVisibility, OwnerError> parameters.SearchVisibility InvalidSearchVisibility
[| String.isNotEmpty parameters.SearchVisibility SearchVisibilityIsRequired
DiscriminatedUnion.isMemberOf<SearchVisibility, OwnerError> parameters.SearchVisibility InvalidSearchVisibility
Owner.ownerIsNotDeleted context parameters.CorrelationId OwnerIsDeleted |]

let command (parameters: SetOwnerSearchVisibilityParameters) =
Expand Down

0 comments on commit 1cd4f19

Please sign in to comment.