< Summary

Information
Class: Utility.Components.SQLContains.SQLContains
Assembly: Utility
File(s): /home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/SQLContains/SQLContains.razor
Tag: 231_14069517506
Line coverage
53%
Covered lines: 14
Uncovered lines: 12
Coverable lines: 26
Total lines: 105
Line coverage: 53.8%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Field()100%11100%
get_Input()100%11100%
get_Output()100%11100%
get_IncludeWildcard()100%11100%
.ctor()100%11100%
OnInitialized()100%11100%
CopyField()100%210%
ClearField()100%210%
Clear()100%210%
Create()100%22100%
Copy()100%210%

File(s)

/home/runner/work/Utility-Blazor/Utility-Blazor/src/Utility/Components/SQLContains/SQLContains.razor

#LineLine coverage
 1@inject IJSRuntime JSRuntime
 2
 3<div class="container">
 4    <label class="label-control">Field:</label>
 5    <div class="input-group">
 6        <input type="text" id="field" name="field" class="form-control" @bind="Field">
 7        <span class="input-group-btn">
 8            <button class="btn btn-info" type="button" id="btnFieldCopy" name="btnFieldCopy" @onclick="CopyField"><i cla
 9            <button class="btn btn-danger" type="button" id="btnFieldClear" name="btnFieldClear" @onclick="ClearField"><
 10        </span>
 11    </div>
 12    <div class="row">
 13        <div class="col">
 14            <div class="input-group">
 15                <textarea id="sqlBuilderInput" name="sqlBuilderInput" class="form-control" rows="5" @bind="Input"></text
 16                <span class="input-group-btn">
 17                    <button id="btnClearSQLBuilder" name="btnClearSQLBuilder" class="btn btn-danger" @onclick="Clear"><i
 18                </span>
 19            </div>
 20        </div>
 21    </div>
 22    <div class="row">
 23        <div class="col">
 24            <div class="form-check">
 25                <input class="form-check-input" type="checkbox" id="chkIncludeWildcard" @bind-value="IncludeWildcard" ch
 26                <label class="form-check-label" for="chkIncludeWildcard">
 27                    Include Wildcard
 28                </label>
 29            </div>
 30        </div>
 31    </div>
 32    <div class="row">
 33        <div class="col">
 34            <button class="btn btn-success" type="button" id="btnParse" name="btnParse" @onclick="Create">Create</button
 35        </div>
 36    </div>
 37    <div class="row">
 38        <div class="col">
 39            <div class="input-group">
 40                <textarea id="sqlBuilderOutput" name="sqlBuilderOutput" class="form-control" rows="5" @bind="Output"></t
 41                <span class="input-group-btn">
 42                    <button id="btnCopySQLBuilder" name="btnCopySQLBuilder" class="btn btn-info" @onclick="Copy"><i clas
 43                </span>
 44            </div>
 45
 46        </div>
 47    </div>
 48</div>
 49
 50@code {
 51
 52    [Parameter]
 2053    public string? Field { get; set; }
 54
 55    [Parameter]
 1656    public string? Input { get; set; }
 57
 58    [Parameter]
 1659    public string? Output { get; set; }
 60
 61    [Parameter]
 2062    public bool IncludeWildcard { get; set; }
 63
 264    string wildcard = "*";
 65
 66    protected override void OnInitialized()
 267    {
 68        // Field = string.Empty;
 69        // Input = string.Empty;
 70        // Output = string.Empty;
 271        IncludeWildcard = false;
 272    }
 73
 74    async Task CopyField()
 075    {
 076        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Field);
 077    }
 78
 79    private void ClearField()
 080    {
 081        Field = string.Empty;
 082    }
 83
 84    private void Clear()
 085    {
 086        Input = string.Empty;
 087    }
 88
 89    private void Create()
 290    {
 91        // CONTAINS(Description, @SearchWord)
 92        // WHERE CONTAINS(t.something, '"bla*" OR "foo*" OR "batz*"')
 93
 294        wildcard = IncludeWildcard ? "*" : "";
 295        var items = Input.Split(new[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
 896        var likeItems = string.Join(" OR ", items.Select(i => $"CONTAINS ({Field}, {wildcard}{i.Trim()}{wildcard})"));
 97
 298        Output = likeItems;
 299    }
 100
 101    async Task Copy()
 0102    {
 0103        await JSRuntime.InvokeVoidAsync("navigator.clipboard.writeText", Output);
 0104    }
 105}