mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 12:22:12 +00:00
Add test sample
This commit is contained in:
parent
be0222311e
commit
6b7c9e5de9
@ -1,7 +1,97 @@
|
||||
create or replace function test_case_can_create_item() returns void as $$
|
||||
begin
|
||||
perform test_assertTrue('hello', true);
|
||||
end;
|
||||
$$ language plpgsql;
|
||||
CREATE OR REPLACE FUNCTION test_case_update_quality() RETURNS void AS $$
|
||||
DECLARE
|
||||
sell_in_result item.sell_in%TYPE;
|
||||
quality_result item.quality%TYPE;
|
||||
BEGIN
|
||||
TRUNCATE TABLE item;
|
||||
CALL new_item('Aged Brie', 4, 6);
|
||||
|
||||
select * from test_run_all();
|
||||
CALL update_quality();
|
||||
|
||||
SELECT quality, sell_in FROM item INTO quality_result, sell_in_result;
|
||||
perform test_assertEquals('Quality should increase', 7.0, quality_result);
|
||||
perform test_assertEquals('Sell in should decrease', 3.0, sell_in_result);
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION format_day(day INTEGER) RETURNS TEXT[] AS $$
|
||||
DECLARE
|
||||
result TEXT[];
|
||||
item_result RECORD;
|
||||
BEGIN
|
||||
result := ARRAY[CONCAT('-------- day ', day, ' --------')];
|
||||
result := result || 'name, sellIn, quality'::TEXT;
|
||||
|
||||
FOR item_result IN (SELECT name, sell_in, quality FROM item ORDER BY name ASC, sell_in ASC, quality ASC)
|
||||
LOOP
|
||||
result := result || format('%s, %s, %s', item_result.name, item_result.sell_in, item_result.quality);
|
||||
END LOOP;
|
||||
|
||||
RETURN result;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE OR REPLACE FUNCTION test_case_update_quality_golden_master() RETURNS VOID AS $$
|
||||
DECLARE
|
||||
sell_in_result item.sell_in%TYPE;
|
||||
quality_result item.quality%TYPE;
|
||||
days INTEGER;
|
||||
result TEXT[];
|
||||
expected TEXT[];
|
||||
item_result RECORD;
|
||||
BEGIN
|
||||
-- given
|
||||
TRUNCATE TABLE item;
|
||||
CALL new_item('+5 Dexterity Vest', 10, 20);
|
||||
CALL new_item('Aged Brie', 2, 0);
|
||||
CALL new_item('Elixir of the Mongoose', 5, 7);
|
||||
CALL new_item('Sulfuras, Hand of Ragnaros', 0, 80);
|
||||
CALL new_item('Sulfuras, Hand of Ragnaros', -1, 80);
|
||||
CALL new_item('Backstage passes to a TAFKAL80ETC concert', 15, 20);
|
||||
CALL new_item('Backstage passes to a TAFKAL80ETC concert', 10, 49);
|
||||
CALL new_item('Backstage passes to a TAFKAL80ETC concert', 5, 49);
|
||||
-- this conjured item does not work properly yet ;
|
||||
CALL new_item('Conjured Mana Cake', 3, 6);
|
||||
days := 1;
|
||||
|
||||
-- when
|
||||
result := format_day(0);
|
||||
FOR current_day IN 1 .. days
|
||||
LOOP
|
||||
CALL update_quality();
|
||||
|
||||
result := result || format_day(current_day);
|
||||
END LOOP;
|
||||
|
||||
-- then
|
||||
expected := ARRAY[
|
||||
'-------- day 0 --------',
|
||||
'name, sellIn, quality',
|
||||
'+5 Dexterity Vest, 10, 20',
|
||||
'Aged Brie, 2, 0',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 5, 49',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 10, 49',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 15, 20',
|
||||
'Conjured Mana Cake, 3, 6',
|
||||
'Elixir of the Mongoose, 5, 7',
|
||||
'Sulfuras, Hand of Ragnaros, -1, 80',
|
||||
'Sulfuras, Hand of Ragnaros, 0, 80',
|
||||
'-------- day 1 --------',
|
||||
'name, sellIn, quality',
|
||||
'+5 Dexterity Vest, 9, 19',
|
||||
'Aged Brie, 1, 1',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 4, 50',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 9, 50',
|
||||
'Backstage passes to a TAFKAL80ETC concert, 14, 21',
|
||||
'Conjured Mana Cake, 2, 5',
|
||||
'Elixir of the Mongoose, 4, 6',
|
||||
'Sulfuras, Hand of Ragnaros, -1, 80',
|
||||
'Sulfuras, Hand of Ragnaros, 0, 80'
|
||||
];
|
||||
|
||||
perform test_assertEquals_golden_master(expected, result);
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
||||
SELECT * FROM test_run_all();
|
||||
Loading…
Reference in New Issue
Block a user