mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[IMP] runbot_merge: move read_tracking_value to utils
And use it in test_trivial_flow instead of the kinda half-assed manual version.
This commit is contained in:
parent
a45db1e089
commit
4215be770d
@ -3,6 +3,7 @@ import contextlib
|
||||
import itertools
|
||||
import re
|
||||
import time
|
||||
import typing
|
||||
|
||||
from lxml import html
|
||||
|
||||
@ -214,3 +215,17 @@ def prevent_unstaging(st) -> None:
|
||||
yield
|
||||
finally:
|
||||
st.active = True
|
||||
|
||||
|
||||
TYPE_MAPPING = {
|
||||
'boolean': 'integer',
|
||||
'date': 'datetime',
|
||||
'monetary': 'float',
|
||||
'selection': 'char',
|
||||
'many2one': 'char',
|
||||
}
|
||||
def read_tracking_value(tv) -> tuple[str, typing.Any, typing.Any]:
|
||||
field_id = tv.field_id if 'field_id' in tv else tv.field
|
||||
field_type = field_id.field_type if 'field_type' in field_id else field_id.ttype
|
||||
t = TYPE_MAPPING.get(field_type) or field_type
|
||||
return field_id.name, tv[f"old_value_{t}"], tv[f"new_value_{t}"]
|
||||
|
@ -11,7 +11,8 @@ import requests
|
||||
from lxml import html
|
||||
|
||||
import odoo
|
||||
from utils import _simple_init, seen, matches, get_partner, Commit, pr_page, to_pr, part_of, ensure_one
|
||||
from utils import _simple_init, seen, matches, get_partner, Commit, pr_page, to_pr, part_of, ensure_one, read_tracking_value
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _configure_statuses(request, project, repo):
|
||||
@ -157,31 +158,29 @@ def test_trivial_flow(env, repo, page, users, config):
|
||||
|
||||
# reverse because the messages are in newest-to-oldest by default
|
||||
# (as that's how you want to read them)
|
||||
messages = reversed([
|
||||
(m.author_id.display_name, m.body, list(zip(
|
||||
m.tracking_value_ids.get_old_display_value(),
|
||||
m.tracking_value_ids.get_new_display_value(),
|
||||
)))
|
||||
for m in pr_id.message_ids
|
||||
])
|
||||
messages = pr_id.message_ids[::-1].mapped(lambda m: (
|
||||
m.author_id.display_name,
|
||||
m.body,
|
||||
list(map(read_tracking_value, m.tracking_value_ids)),
|
||||
))
|
||||
|
||||
assert list(messages) == [
|
||||
(users['user'], '<p>Pull Request created</p>', []),
|
||||
(users['user'], '', [(c1, c2)]),
|
||||
('OdooBot', f'<p>statuses changed on {c2}</p>', [('Opened', 'Validated')]),
|
||||
(users['user'], '', [('head', c1, c2)]),
|
||||
('OdooBot', f'<p>statuses changed on {c2}</p>', [('state', 'Opened', 'Validated')]),
|
||||
# reviewer approved changing the state and setting reviewer as reviewer
|
||||
# plus set merge method
|
||||
('Reviewer', '', [
|
||||
('Validated', 'Ready'),
|
||||
('', 'rebase and merge, using the PR as merge commit message'),
|
||||
('', 'Reviewer'),
|
||||
('state', 'Validated', 'Ready'),
|
||||
('merge_method', '', 'rebase and merge, using the PR as merge commit message'),
|
||||
('reviewed_by', '', 'Reviewer'),
|
||||
]),
|
||||
# staging succeeded
|
||||
(matches('$$'), f'<p>staging {st.id} succeeded</p>', [
|
||||
# set merge date
|
||||
(False, pr_id.merge_date + 'Z'),
|
||||
('merge_date', False, pr_id.merge_date),
|
||||
# updated state
|
||||
('Ready', 'Merged'),
|
||||
('state', 'Ready', 'Merged'),
|
||||
]),
|
||||
]
|
||||
|
||||
|
@ -2,7 +2,7 @@ import xmlrpc.client
|
||||
|
||||
import pytest
|
||||
|
||||
from utils import Commit
|
||||
from utils import Commit, read_tracking_value
|
||||
|
||||
# basic udiff / show style patch, updates `b` from `1` to `2`
|
||||
BASIC_UDIFF = """\
|
||||
@ -23,22 +23,6 @@ index 000000000000..000000000000 100644
|
||||
+2
|
||||
"""
|
||||
|
||||
FIELD_MAPPING = {
|
||||
'boolean': ('old_value_integer', 'new_value_integer'),
|
||||
'date': ('old_value_datetime', 'new_value_datetime'),
|
||||
'datetime': ('old_value_datetime', 'new_value_datetime'),
|
||||
'char': ('old_value_char', 'new_value_char'),
|
||||
'float': ('old_value_float', 'new_value_float'),
|
||||
'integer': ('old_value_integer', 'new_value_integer'),
|
||||
'monetary': ('old_value_float', 'new_value_float'),
|
||||
'text': ('old_value_text', 'new_value_text'),
|
||||
}
|
||||
def read_tracking_value(tv):
|
||||
field_id = tv.field_id if 'field_id' in tv else tv.field
|
||||
field_type = field_id.field_type if 'field_type' in field_id else field_id.ttype
|
||||
old_field_name, new_field_name = FIELD_MAPPING[field_type]
|
||||
return field_id.name, tv[old_field_name], tv[new_field_name]
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _setup(repo):
|
||||
|
Loading…
Reference in New Issue
Block a user