Source code for tests.fixtures.seed_data

"""
Seed data to put into the mock DynamoDB table and test the breakdown endpoint.
"""
from decimal import Decimal

from mypy_boto3_dynamodb.service_resource import _Table

###############################
# Official Breakdown Examples #
###############################

EXAMPLE_BREAKDOWN_W_NULL_AND_NON_NULL_BREAKDOWN_ITEMS_IN_DB = {
    "gsi2sk": "USER#anonymous",
    "submitted_by_user_email": "anonymous",
    "gsi1sk": "WORD#7",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "7",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "быть",
    "sk": "BREAKDOWN",
    "pk": "WORD#7",
    "breakdown_items": [
        {"morpheme": "бы", "morpheme_family_id": "934", "position": "0", "morpheme_id": "1776"},
        {"morpheme": "ть", "morpheme_family_id": None, "position": "1", "morpheme_id": None},
    ],
    "gsi1pk": "USER#anonymous",
    "is_verified": False,
    "is_inference": True,
    "gsi2pk": "WORD#7",
}


EXAMPLE_OFFICIAL_BREAKDOWN_BY_USER_W_NULL_AND_NON_NULL_BREAKDOWN_ITEMS_IN_DB = {
    "gsi2sk": "USER#email@gmail.com",
    "submitted_by_user_email": "email@gmail.com",
    "gsi1sk": "WORD#7",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "7",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "быть",
    "sk": "BREAKDOWN",
    "pk": "WORD#7",
    "breakdown_items": [
        {"morpheme": "бы", "morpheme_family_id": "934", "position": "0", "morpheme_id": "1776"},
        {"morpheme": "ть", "morpheme_family_id": None, "position": "1", "morpheme_id": None},
    ],
    "gsi1pk": "USER#email@gmail.com",
    "is_verified": False,
    "is_inference": False,
    "gsi2pk": "WORD#7",
}


EXAMPLE_BREAKDOWN_W_ALL_NULL_BREAKDOWN_ITEMS = {
    "gsi2sk": "USER#anonymous",
    "submitted_by_user_email": "anonymous",
    "gsi1sk": "WORD#56",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "56",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "самый",
    "sk": "BREAKDOWN",
    "pk": "WORD#56",
    "breakdown_items": [
        {"morpheme": "сам", "morpheme_family_id": None, "position": "0", "morpheme_id": None},
        {"morpheme": "ый", "morpheme_family_id": None, "position": "1", "morpheme_id": None},
    ],
    "gsi1pk": "USER#anonymous",
    "is_verified": False,
    "is_inference": True,
    "gsi2pk": "WORD#56",
}


EXAMPLE_BREAKDOWN_W_MORPHEME_FAMILIES_IN_DB = {
    "gsi2sk": "USER#anonymous",
    "submitted_by_user_email": "anonymous",
    "gsi1sk": "WORD#57",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "57",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "знать",
    "sk": "BREAKDOWN",
    "pk": "WORD#57",
    "breakdown_items": [
        {"morpheme": "зна", "morpheme_family_id": "245", "position": 0, "morpheme_id": "511"},
        {"morpheme": "ть", "morpheme_family_id": "1385", "position": 1, "morpheme_id": "2196"},
        {"morpheme": "зна", "morpheme_family_id": "245", "position": 0, "morpheme_id": "511"},
        {"morpheme": "ть", "morpheme_family_id": "1385", "position": 1, "morpheme_id": "2196"},
    ],
    "gsi1pk": "USER#anonymous",
    "is_verified": False,
    "is_inference": True,
    "gsi2pk": "WORD#57",
}


EXAMPLE_BREAKDOWN_W_NO_NULL_BREAKDOWN_ITEMS = {
    "gsi2sk": "USER#anonymous",
    "submitted_by_user_email": "anonymous",
    "gsi1sk": "WORD#438",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "438",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "выходить",
    "sk": "BREAKDOWN",
    "pk": "WORD#438",
    "breakdown_items": [
        {"morpheme": "вы", "morpheme_family_id": "102", "position": "0", "morpheme_id": "218"},
        {"morpheme": "ход", "morpheme_family_id": "812", "position": "1", "morpheme_id": "1577"},
        {"morpheme": "ить", "morpheme_family_id": "1333", "position": "2", "morpheme_id": "2139"},
    ],
    "gsi1pk": "USER#anonymous",
    "is_verified": False,
    "is_inference": True,
    "gsi2pk": "WORD#438",
}


EXAMPLE_VERIFIED_BREAKDOWN = {
    "gsi2sk": "USER#eric.riddoch@gmail.com",
    "submitted_by_user_email": "eric.riddoch@gmail.com",
    "gsi1sk": "WORD#771",
    "date_verified": "2022-07-23 05:42:11.985578",
    "__type": "BREAKDOWN",
    "word_id": "771",
    "date_submitted": "2022-02-15 09:00:24.068323",
    "word": "выглядеть",
    "sk": "BREAKDOWN",
    "pk": "WORD#771",
    "breakdown_items": [
        {"morpheme": "вы", "morpheme_family_id": "1401", "position": "0", "morpheme_id": "2213"},
        {"morpheme": "гляд", "morpheme_family_id": "127", "position": "1", "morpheme_id": "276"},
        {"morpheme": "еть", "morpheme_family_id": "1324", "position": "2", "morpheme_id": "2130"},
    ],
    "gsi1pk": "USER#eric.riddoch@gmail.com",
    "is_verified": True,
    "is_inference": False,
    "gsi2pk": "WORD#771",
}


EXAMPLE_NON_VERIFIED_BREAKDOWN_SUBMITTED_BY_USER = {
    "gsi2sk": "USER#dmitriy.abaimov@bengroupinc.com",
    "submitted_by_user_email": "dmitriy.abaimov@bengroupinc.com",
    "gsi1sk": "WORD#59470",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "59470",
    "date_submitted": "2022-02-23 15:38:30.049221",
    "word": "None",
    "sk": "BREAKDOWN",
    "pk": "WORD#59470",
    "breakdown_items": [
        {"morpheme": "само", "morpheme_family_id": "1107", "position": "0", "morpheme_id": "1892"},
        {"morpheme": "у", "morpheme_family_id": "1399", "position": "1", "morpheme_id": "2211"},
        {"morpheme": "со", "morpheme_family_id": "1403", "position": "2", "morpheme_id": "2219"},
        {"morpheme": "верш", "morpheme_family_id": "64", "position": "3", "morpheme_id": "124"},
        {"morpheme": "ен", "morpheme_family_id": None, "position": "4", "morpheme_id": None},
        {"morpheme": "ство", "morpheme_family_id": "1268", "position": "5", "morpheme_id": "2066"},
        {"morpheme": "ва", "morpheme_family_id": None, "position": "6", "morpheme_id": None},
        {"morpheme": "ни", "morpheme_family_id": None, "position": "7", "morpheme_id": None},
        {"morpheme": "е", "morpheme_family_id": "1189", "position": "8", "morpheme_id": "1985"},
    ],
    "gsi1pk": "USER#dmitriy.abaimov@bengroupinc.com",
    "is_verified": False,
    "is_inference": False,
    "gsi2pk": "WORD#59470",
}


#####################################
# User Submitted Breakdown Examples #
#####################################


EXAMPLE_USER_SUBMITTED_BREAKDOWN__NOT_TEST_USER = {
    "submitted_by_user_email": "email@gmail.com",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "7",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "быть",
    "sk": "BREAKDOWN#7",
    "pk": "USER#email@gmail.com",
    "breakdown_items": [
        {"morpheme": "бы", "morpheme_family_id": "934", "position": "0", "morpheme_id": "1776"},
        {"morpheme": "ть", "morpheme_family_id": None, "position": "1", "morpheme_id": None},
    ],
    "is_verified": False,
    "is_inference": False,
}


EXAMPLE_USER_SUBMITTED_BREAKDOWN_COPY_W_DIFF_USER = {
    "submitted_by_user_email": "another_user@gmail.com",
    "date_verified": "None",
    "__type": "BREAKDOWN",
    "word_id": "7",
    "date_submitted": "2022-02-15 05:45:18.740114",
    "word": "быть",
    "sk": "BREAKDOWN#7",
    "pk": "USER#another_user@gmail.com",
    "breakdown_items": [
        {"morpheme": "бы", "morpheme_family_id": "934", "position": "0", "morpheme_id": "1776"},
        {"morpheme": "ть", "morpheme_family_id": None, "position": "1", "morpheme_id": None},
    ],
    "is_verified": False,
    "is_inference": False,
}


###################
# Breakdown Items #
###################


EXAMPLE_BREAKDOWN_ITEM = {
    "submitted_by_user_email": "eric.riddoch@gmail.com",
    "breakdown_id": "77222",
    "morpheme_id": "2213",
    "gsi1sk": "BREAKDOWN#eric.riddoch@gmail.com",
    "__type": "BREAKDOWN_ITEM",
    "word_id": "771",
    "sk": "BREAKDOWN_ITEM#2213#0",
    "morpheme_family_id": "2213",
    "pk": "WORD#771",
    "position": 0,
    "morpheme": "вы",
    "gsi1pk": "MORPHEME_FAMILY#2213",
}


EXAMPLE_NULL_BREAKDOWN_ITEM = {
    "pk": "WORD#9203",
    "sk": "BREAKDOWN_ITEM#f4ef8326-a27e-4cb6-9cac-0089fc1eda45#8",
    "__type": "BREAKDOWN_ITEM_NULL",
    "word_id": "9203",
    "position": 8,
    "morpheme": "ся",
    "morpheme_id": None,
    "morpheme_family_id": None,
    "submitted_by_user_email": None,
}

#####################
# Morpheme Families #
#####################

EXAMPLE_MORPHEME_FAMILY_W_ID_245 = {
    "morphemes": [{"morpheme": "знай", "morpheme_id": "510"}, {"morpheme": "зна", "morpheme_id": "511"}],
    "family_meanings": ["know"],
    "level": Decimal("1"),
    "__type": "MORPHEME_FAMILY",
    "sk": "MORPHEME_FAMILY#245",
    "word_pos": "any",
    "family_id": "245",
    "pk": "MORPHEME_FAMILY#245",
    "type": "root",
}


EXAMPLE_MORPHEME_FAMILY_W_ID_934 = {
    "morphemes": [{"morpheme": "бы", "morpheme_id": "1776"}],
    "family_meanings": ["black"],
    "level": Decimal("6"),
    "__type": "MORPHEME_FAMILY",
    "sk": "MORPHEME_FAMILY#934",
    "word_pos": "any",
    "family_id": "934",
    "pk": "MORPHEME_FAMILY#934",
    "type": "root",
}


EXAMPLE_MORPHEME_FAMILY_W_ID_1304 = {
    "morphemes": [
        {"morpheme": "ать", "morpheme_id": "2105"},
        {"morpheme": "ывать", "morpheme_id": "2106"},
        {"morpheme": "ивать", "morpheme_id": "2107"},
    ],
    "family_meanings": [None],
    "level": Decimal("6"),
    "__type": "MORPHEME_FAMILY",
    "sk": "MORPHEME_FAMILY#1304",
    "word_pos": "verb",
    "family_id": "1304",
    "pk": "MORPHEME_FAMILY#1304",
    "type": "suffix",
}


EXAMPLE_MORPHEME_FAMILY_W_ID_1385 = {
    "morphemes": [{"morpheme": "ть", "morpheme_id": "2196"}],
    "family_meanings": [None],
    "level": Decimal("6"),
    "__type": "MORPHEME_FAMILY",
    "sk": "MORPHEME_FAMILY#1385",
    "word_pos": "verb",
    "family_id": "1385",
    "pk": "MORPHEME_FAMILY#1385",
    "type": "suffix",
}


#############
# Morphemes #
#############

EXAMPLE_MORPHEME_W_ID_2105 = {
    "morpheme_id": "2105",
    "gsi1sk": "MORPHEME#2105",
    "__type": "MORPHEME",
    "sk": "MORPHEME#2105",
    "family_id": "1304",
    "pk": "MORPHEME_FAMILY#1304",
    "morpheme": "ать",
    "gsi1pk": "MORPHEME#2105",
}


EXAMPLE_MORPHEME_W_ID_1776 = {
    "morpheme_id": "1776",
    "gsi1sk": "MORPHEME#1776",
    "__type": "MORPHEME",
    "sk": "MORPHEME#1776",
    "family_id": "934",
    "pk": "MORPHEME_FAMILY#934",
    "morpheme": "бы",
    "gsi1pk": "MORPHEME#1776",
}

########
# Word #
########

EXAMPLE_WORD_W_ID_7 = {
    "definitions": [
        {
            "pos": "verb",
            "definitions": [
                {
                    "sub_defs": [
                        {
                            "definition": "be",
                            "notes": None,
                            "sub_def_position": Decimal("1"),
                            "sub_def_id": Decimal("96"),
                        },
                        {
                            "definition": "happen",
                            "notes": None,
                            "sub_def_position": Decimal("2"),
                            "sub_def_id": Decimal("97"),
                        },
                        {
                            "definition": "(would you) please",
                            "notes": None,
                            "sub_def_position": Decimal("3"),
                            "sub_def_id": Decimal("98"),
                        },
                        {
                            "definition": "will you be so kind",
                            "notes": None,
                            "sub_def_position": Decimal("4"),
                            "sub_def_id": Decimal("99"),
                        },
                        {
                            "definition": "more are coming (on the way)",
                            "notes": None,
                            "sub_def_position": Decimal("5"),
                            "sub_def_id": Decimal("100"),
                        },
                        {
                            "definition": "a piece of a churchyard fits everybody",
                            "notes": None,
                            "sub_def_position": Decimal("6"),
                            "sub_def_id": Decimal("101"),
                        },
                        {
                            "definition": "All face one way",
                            "notes": None,
                            "sub_def_position": Decimal("7"),
                            "sub_def_id": Decimal("102"),
                        },
                    ],
                    "def_position": Decimal("1"),
                    "definition_id": Decimal("95"),
                }
            ],
        }
    ],
    "conjugations": {
        "1st_per_pl": "бу'дем",
        "past_pl": "бы'ли",
        "1st_per_sing": "бу'ду",
        "3rd_per_sing": "бу'дет",
        "past_n": "бы'ло",
        "actv_past_part": "бы'вший",
        "past_m": "был",
        "actv_part": "бы'вший",
        "past_f": "была'",
        "2nd_per_sing": "бу'дешь",
        "aspect": "impf",
        "impr": "будь",
        "pass_part": None,
        "pass_past_part": None,
        "3rd_per_pl": "бу'дут",
        "impr_pl": "бу'дьте",
        "2nd_per_pl": "бу'дете",
        "gerund": "бу'дучи",
    },
    "aspectual_pairs": [
        {"imp_accent": "быть", "pfv_word_id": None, "pfv_accent": None, "imp_word_id": Decimal("7")}
    ],
    "__type": "WORD",
    "sk": "WORD#7",
    "pk": "WORD#7",
    "word": {"word_id": "7", "word": "быть", "accent": "быть", "pos": "verb", "frequency": Decimal("7")},
    "sentences": [
        {"rus": "Быть не может.", "exact_match": True, "eng": "That's impossible."},
        {"rus": "Быть значит поступать.", "exact_match": True, "eng": "To be is to do."},
        {"rus": "Каково быть замужем?", "exact_match": True, "eng": "How does it feel being married?"},
        {"rus": "Должно быть весело.", "exact_match": True, "eng": "It should be fun."},
        {"rus": "Должно быть весело.", "exact_match": True, "eng": "That must be fun."},
        {"rus": "Может быть.", "exact_match": True, "eng": "It may be."},
        {"rus": "Не может быть!", "exact_match": True, "eng": "This is impossible!"},
        {"rus": "Не может быть!", "exact_match": True, "eng": "This can't be!"},
        {"rus": "Не может быть!", "exact_match": True, "eng": "Unbelievable!"},
        {"rus": "Хочешь быть богатым?", "exact_match": True, "eng": "Do you want to be rich?"},
        {"rus": "Хорошо быть дома.", "exact_match": True, "eng": "It's nice to be home."},
        {"rus": "Быть не может.", "exact_match": True, "eng": "That can't be."},
        {"rus": "Бытие определяет сознание.", "exact_match": False, "eng": "Being determines consciousness."},
    ],
}


EXAMPLE_WORD_W_ID_18 = {
    "definitions": [
        {
            "pos": "pronoun",
            "definitions": [
                {
                    "sub_defs": [
                        {
                            "definition": "they",
                            "notes": "пред. - них",
                            "sub_def_position": Decimal("1"),
                            "sub_def_id": Decimal("215"),
                        },
                        {
                            "definition": "them",
                            "notes": None,
                            "sub_def_position": Decimal("2"),
                            "sub_def_id": Decimal("216"),
                        },
                    ],
                    "def_position": Decimal("1"),
                    "definition_id": Decimal("214"),
                }
            ],
        }
    ],
    "__type": "WORD",
    "sk": "WORD#18",
    "pk": "WORD#18",
    "word": {"word_id": "18", "word": "они", "accent": "они'", "pos": "pronoun", "frequency": Decimal("18")},
    "sentences": [
        {"rus": "Они?", "exact_match": True, "eng": "They are?"},
        {"rus": "Они — борцы.", "exact_match": True, "eng": "They are wrestlers."},
        {"rus": "Они поженились.", "exact_match": True, "eng": "They got married."},
        {"rus": "Они поссорились.", "exact_match": True, "eng": "They had an argument."},
        {"rus": "Где они?", "exact_match": True, "eng": "Where are they?"},
        {"rus": "Они болтают.", "exact_match": True, "eng": "They are having a chat."},
        {"rus": "Они друзья?", "exact_match": True, "eng": "Are they friends?"},
        {"rus": "Они ровесники.", "exact_match": True, "eng": "They are the same age."},
        {"rus": "Они бегут.", "exact_match": True, "eng": "They run."},
        {"rus": "Они христиане.", "exact_match": True, "eng": "They are Christians."},
    ],
}


EXAMPLE_WORD_W_ID_50 = {
    "definitions": [
        {
            "pos": "verb",
            "definitions": [
                {
                    "sub_defs": [
                        {
                            "definition": "say, tell",
                            "notes": None,
                            "sub_def_position": Decimal("1"),
                            "sub_def_id": Decimal("477"),
                        },
                        {
                            "definition": "speak, talk",
                            "notes": None,
                            "sub_def_position": Decimal("2"),
                            "sub_def_id": Decimal("478"),
                        },
                        {
                            "definition": "I must say",
                            "notes": None,
                            "sub_def_position": Decimal("3"),
                            "sub_def_id": Decimal("479"),
                        },
                        {
                            "definition": "as a matter of fact",
                            "notes": None,
                            "sub_def_position": Decimal("4"),
                            "sub_def_id": Decimal("480"),
                        },
                        {
                            "definition": "not to mention",
                            "notes": None,
                            "sub_def_position": Decimal("5"),
                            "sub_def_id": Decimal("481"),
                        },
                        {
                            "definition": "well, I never (did)",
                            "notes": None,
                            "sub_def_position": Decimal("6"),
                            "sub_def_id": Decimal("482"),
                        },
                    ],
                    "def_position": Decimal("1"),
                    "definition_id": Decimal("476"),
                }
            ],
        }
    ],
    "conjugations": {
        "1st_per_pl": "ска'жем",
        "past_pl": "сказа'ли",
        "1st_per_sing": "скажу'",
        "3rd_per_sing": "ска'жет",
        "past_n": "сказа'ло",
        "actv_past_part": "сказа'вший",
        "past_m": "сказа'л",
        "actv_part": None,
        "past_f": "сказа'ла",
        "2nd_per_sing": "ска'жешь",
        "aspect": "perf",
        "impr": "скажи'",
        "pass_part": None,
        "pass_past_part": "ска'занный",
        "3rd_per_pl": "ска'жут",
        "impr_pl": "скажи'те",
        "2nd_per_pl": "ска'жете",
        "gerund": "сказа'в",
    },
    "aspectual_pairs": [
        {
            "imp_accent": "говори'ть",
            "pfv_word_id": Decimal("50"),
            "pfv_accent": "сказа'ть",
            "imp_word_id": Decimal("55"),
        },
        {
            "imp_accent": "ска'зывать",
            "pfv_word_id": Decimal("50"),
            "pfv_accent": "сказа'ть",
            "imp_word_id": Decimal("16029"),
        },
    ],
    "__type": "WORD",
    "sk": "WORD#50",
    "pk": "WORD#50",
    "word": {
        "word_id": "50",
        "word": "сказать",
        "accent": "сказа'ть",
        "pos": "verb",
        "frequency": Decimal("50"),
    },
    "sentences": [
        {"rus": "Сказать?", "exact_match": True, "eng": "Should I tell?"},
        {"rus": "Как сказать... ?", "exact_match": True, "eng": "How do you say...?"},
        {"rus": "Сказать ему?", "exact_match": True, "eng": "Should I tell him?"},
        {"rus": "Сказать ему?", "exact_match": True, "eng": "Ought I to tell it to him?"},
        {"rus": "Дай сказать.", "exact_match": True, "eng": "Let me speak."},
        {"rus": "Дайте сказать.", "exact_match": True, "eng": "Let me talk."},
        {"rus": "Сложно сказать.", "exact_match": True, "eng": "It's hard to say."},
        {"rus": "Сказано — сделано.", "exact_match": False, "eng": "No sooner said than done."},
        {"rus": "Сказано — сделано.", "exact_match": False, "eng": "Immediately said, immediately done."},
        {"rus": "Отлично сказано!", "exact_match": False, "eng": "Well said!"},
        {"rus": "Вам сказали.", "exact_match": False, "eng": "You've been told."},
    ],
}


#########
# Users #
#########

ADMIN_USER = {
    "pk": "USER#eric.riddoch@gmail.com",
    "sk": "USER#eric.riddoch@gmail.com",
    "email": "eric.riddoch@gmail.com",
    "is_admin": True,
}

NON_ADMIN_USER = {
    "pk": "USER#dmitriy.abaimov@bengroupinc.com",
    "sk": "USER#dmitriy.abaimov@bengroupinc.com",
    "email": "dmitriy.abaimov@bengroupinc.com",
    "is_admin": False,
}

TEST_USER_NOT_AS_ADMIN = {
    "pk": "USER#email@gmail.com",
    "sk": "USER#email@gmail.com",
    "email": "email@gmail.com",
    "is_admin": False,
}

TEST_USER_AS_ADMIN = {
    "pk": "USER#super_user@batcave.com",
    "sk": "USER#super_user@batcave.com",
    "email": "super_user@batcave.com",
    "is_admin": True,
}


####################
# User Submissions #
####################

EXAMPLE_USER_SUBMISSION_REPLACING_CURRENT_BREAKDOWN = {
    "word_id": 7,
    "breakdown_items": [
        {"morpheme_id": 1776, "position": 0},
        {"morpheme": "ть", "position": 1, "morpheme_id": None},
    ],
}


EXAMPLE_SUCCESSFUL_BREAKDOWN_SUBMISSION = {
    "word_id": 50,
    "breakdown_items": [
        {"morpheme": "сказ", "position": 0, "morpheme_id": None},
        {"morpheme_id": 2105, "position": 1},
    ],
}


EXAMPLE_BREAKDOWN_DOESNT_ADD_UP = {
    "word_id": 50,
    "breakdown_items": [
        {"morpheme": "сказe", "position": 0, "morpheme_id": None},
        {"morpheme_id": 2105, "position": 1},
    ],
}


EXAMPLE_SUCCESSFUL_BREAKDOWN_W_ALL_NULL_BREAKDOWN_ITEMS = {
    "word_id": 18,
    "breakdown_items": [
        {"morpheme": "он", "position": 0, "morpheme_id": None},
        {"morpheme": "и", "position": 1, "morpheme_id": None},
    ],
}


EXAMPLE_USER_SUBMISSION_MISSING_MORPHEME_IDS = {
    "word_id": 438,
    "breakdown_items": [
        {"position": 0, "morpheme_id": 218},
        {"position": 1, "morpheme_id": 1577},
        {"position": 2, "morpheme_id": 2139},
    ],
}


EXAMPLE_USER_SUBMISSION_MISSING_WORD = {
    "word_id": 150,
    "breakdown_items": [{"morpheme": "именно", "position": 0, "morpheme_id": None}],
}


#################
# Seed Database #
#################

EXAMPLE_DATA = [
    # Offical Beakdown Examples based on real data
    EXAMPLE_BREAKDOWN_W_NULL_AND_NON_NULL_BREAKDOWN_ITEMS_IN_DB,  # inferenced example
    EXAMPLE_OFFICIAL_BREAKDOWN_BY_USER_W_NULL_AND_NON_NULL_BREAKDOWN_ITEMS_IN_DB,
    EXAMPLE_BREAKDOWN_W_ALL_NULL_BREAKDOWN_ITEMS,  # inferenced example with all null breakdown items
    EXAMPLE_BREAKDOWN_W_NO_NULL_BREAKDOWN_ITEMS,  # inferenced example with no null breakdown items
    EXAMPLE_BREAKDOWN_W_MORPHEME_FAMILIES_IN_DB,  # inferenced example with duplicate breakdown_items
    EXAMPLE_VERIFIED_BREAKDOWN,  # Verified example by user eric.riddoch@gmail.com
    EXAMPLE_NON_VERIFIED_BREAKDOWN_SUBMITTED_BY_USER,  # Non-verified example by user dmitriy.abaimov@bengroupinc.com
    # User Submitted Breakdown Examples
    EXAMPLE_USER_SUBMITTED_BREAKDOWN__NOT_TEST_USER,
    EXAMPLE_USER_SUBMITTED_BREAKDOWN_COPY_W_DIFF_USER,
    # Breakdown Items
    EXAMPLE_BREAKDOWN_ITEM,
    EXAMPLE_NULL_BREAKDOWN_ITEM,
    # Morpheme Families
    EXAMPLE_MORPHEME_FAMILY_W_ID_245,
    EXAMPLE_MORPHEME_FAMILY_W_ID_934,
    EXAMPLE_MORPHEME_FAMILY_W_ID_1304,
    EXAMPLE_MORPHEME_FAMILY_W_ID_1385,
    # Morphemes
    EXAMPLE_MORPHEME_W_ID_2105,
    EXAMPLE_MORPHEME_W_ID_1776,
    # Words
    EXAMPLE_WORD_W_ID_7,
    EXAMPLE_WORD_W_ID_18,
    EXAMPLE_WORD_W_ID_50,
    # Users
    ADMIN_USER,
    NON_ADMIN_USER,
    TEST_USER_NOT_AS_ADMIN,
    TEST_USER_AS_ADMIN,
]


USER_SUBMISSION_DATA = [
    EXAMPLE_USER_SUBMISSION_REPLACING_CURRENT_BREAKDOWN,
    EXAMPLE_SUCCESSFUL_BREAKDOWN_SUBMISSION,
    EXAMPLE_BREAKDOWN_DOESNT_ADD_UP,
    EXAMPLE_SUCCESSFUL_BREAKDOWN_W_ALL_NULL_BREAKDOWN_ITEMS,
    EXAMPLE_USER_SUBMISSION_MISSING_MORPHEME_IDS,
    EXAMPLE_USER_SUBMISSION_MISSING_WORD,
]


# Helper Function
[docs]def seed_data(rootski_dynamo_table: _Table) -> None: for data in EXAMPLE_DATA: rootski_dynamo_table.put_item(Item=data)