view schema/gemma_tests.sql @ 5666:37c2354a6024 clickable-links

Render links only to known bottlenecks
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 05 Dec 2023 15:34:31 +0100
parents 722b7c305319
children
line wrap: on
line source

-- This is Free Software under GNU Affero General Public License v >= 3.0
-- without warranty, see README.md and license for details.

-- SPDX-License-Identifier: AGPL-3.0-or-later
-- License-Filename: LICENSES/AGPL-3.0.txt

-- Copyright (C) 2019 by via donau
--   – Österreichische Wasserstraßen-Gesellschaft mbH
-- Software engineering by Intevation GmbH

-- Author(s):
--  * Tom Gottfried <tom@intevation.de>

--
-- pgTAP test script for gemma schema definition
--

SELECT ok(is_valid_from_item('SELECT * FROM sys_admin.published_services'),
    'Valid statement passes check');

SELECT ok(NOT is_valid_from_item('This is not SQL'),
    'Arbitrary text does not pass check');

SELECT ok(is_valid_from_item(NULL) IS NULL,
    'NULL value is not checked');

SELECT throws_ok($$
    SET CONSTRAINTS waterway.waterway_axis_wtwaxs_unique IMMEDIATE;
    INSERT INTO waterway.waterway_axis (wtwaxs, objnam) VALUES
        (ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test'),
        (ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test')
    $$,
    23505, NULL,
    'No duplicate geometries can be inserted into waterway_axis');

SELECT throws_ok($$
    SET CONSTRAINTS waterway.waterway_axis_wtwaxs_unique IMMEDIATE;
    INSERT INTO waterway.waterway_axis (wtwaxs, objnam, validity) VALUES (
        ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'),
        'test',
        tstzrange(NULL, current_timestamp)
    ), (
        ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'),
        'test',
        tstzrange(current_timestamp - interval '1d', NULL)
    )
    $$,
    23505, NULL,
    'Duplicate axis geometries cannot be inserted if validities intersect');

SELECT lives_ok($$
    INSERT INTO waterway.waterway_axis (wtwaxs, objnam, validity) VALUES (
        ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'),
        'test',
        tstzrange(NULL, current_timestamp)
    ), (
        ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'),
        'test',
        tstzrange(current_timestamp, NULL)
    )
    $$,
    'Duplicate axis geometries can be inserted if validity differs');

SELECT throws_ok($$
    INSERT INTO waterway.waterway_area (area) VALUES
        (ST_GeogFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')),
        (ST_GeogFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'))
    $$,
    23505, NULL,
    'No duplicate geometries can be inserted into waterway_area');

SELECT throws_ok($$
    INSERT INTO waterway.fairway_dimensions (
        area, level_of_service,
        min_width, max_width, min_depth, source_organization
    ) VALUES (
        ST_GeogFromText('MULTIPOLYGON(((0 0, 1 1, 1 0, 0 0)))'), 3,
        100, 200, 2, 'test'
    ), (
        ST_GeogFromText('MULTIPOLYGON(((0 0, 1 1, 1 0, 0 0)))'), 3,
        100, 200, 2, 'test'
    )
    $$,
    23505, NULL,
    'No duplicate geometries can be inserted into fairway_dimensions');

SELECT lives_ok($$
    INSERT INTO waterway.fairway_dimensions (
        area, level_of_service,
        min_width, max_width, min_depth, source_organization, staging_done
    ) VALUES (
        ST_GeogFromText('MULTIPOLYGON(((0 0, 1 1, 1 0, 0 0)))'), 3,
        100, 200, 2, 'test', false
    ), (
        ST_GeogFromText('MULTIPOLYGON(((0 0, 1 1, 1 0, 0 0)))'), 3,
        100, 200, 2, 'test', true
    )
    $$,
    'Duplicate fairway area can be inserted if stage_done differs');

SELECT throws_ok($$
    UPDATE waterway.fairway_dimensions SET staging_done = true
    $$,
    23505, NULL,
    'No duplicate fairway area can be released from staging area');