コード例 #1
0
def test_item_should_duplicate_itself(duplicate_item, get_items, get_me):

    # Arrange
    id = '2'
    name = 'Test Item 01 Dupe'
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{
        'id': '1',
        'name': 'Test Item 01',
        'board': {
            'id': '1',
            'name': 'Test Board'
        }
    }]
    duplicate_item.return_value = {'id': id, 'name': name}
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    duplicate = item.duplicate()

    # Assert
    ok_(duplicate)
    eq_(duplicate.id, id)
    eq_(duplicate.name, name)
コード例 #2
0
def test_item_should_remove_files(change_column_value, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{
        'id': '1',
        'name': 'Test Item 01',
        'board': {
            'id': '1'
        }
    }]
    change_column_value.return_value = get_items.return_value[0]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]
    file_column = cv.create_column_value(ColumnType.file,
                                         id='files',
                                         title='Files')

    # Act
    item = item.remove_files(file_column)

    # Assert
    ok_(item != None)
    eq_(item.id, '1')
    eq_(item.name, 'Test Item 01')
    eq_(item.board.id, '1')
コード例 #3
0
def test_item_should_clear_item_updates(clear_item_updates, get_items, get_me):

    # Arrange
    id = '1'
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{
        'id':
        id,
        'updates': [{
            'id': '2',
            'item_id': '1',
            'creator_id': '1',
            'replies': [{
                'id': '3',
                'creator_id': '1'
            }]
        }]
    }]
    clear_item_updates.return_value = {'id': id, 'updates': []}
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    updated_item = item.clear_updates()

    # Assert
    ok_(updated_item)
    eq_(updated_item.id, id)
    eq_(len(updated_item.updates), 0)
コード例 #4
0
ファイル: monday.py プロジェクト: paddymills/monday-jobs
def process_updates(jobs, board_name='Jobs'):
    client = MondayClient('*****@*****.**', TOKEN, TOKEN)
    board = client.get_board(name=board_name)

    count = 0
    for group in board.get_groups():
        if group.title in SKIP_GROUPS:
            continue

        for item in group.get_items():
            if item.name in jobs:
                print('\r[{}] Updating: {}'.format(count, item.name), end='')

                update_vals = list()
                for k, v in jobs[item.name].items():
                    col_id, col_type = col_map[k]

                    if v is None:
                        kwargs = {}
                    elif col_type is ColumnType.date:
                        kwargs = {'date': v.date().isoformat()}
                    else:
                        kwargs = {'value': v}

                    col = create_column_value(col_id, col_type, **kwargs)

                    update_vals.append(col)

                item.change_multiple_column_values(column_values=update_vals)
                logger.info("Updating {}: {}".format(item.name,
                                                     log_vals(update_vals)))
                count += 1
            else:
                logger.info("Not in active jobs: {}".format(item.name))
    print('\n')
コード例 #5
0
def test_item_should_change_multiple_column_values_with_column_value_list(
        change_multiple_column_value, get_board, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 01'}]
    get_board.return_value = en.Board(id='1', name='Test Board 01')
    change_multiple_column_value.return_value = {
        'id': '1',
        'name': 'Test Item 01'
    }
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    column_value = cv.create_column_value(ColumnType.text,
                                          id='text_column_01',
                                          title='Text Column 01',
                                          text='Hello, world!',
                                          value=json.dumps('Hello, world!'))
    item = item.change_multiple_column_values([column_value])

    # Assert
    ok_(item != None)
    eq_(item.name, 'Test Item 01')
コード例 #6
0
def test_item_should_get_column_value_with_extra_id(get_column_values,
                                                    get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    get_column_values.return_value = [
        cv.LongTextValue(
            **{
                'id': 'text_column_01',
                'title': 'Text Column 01',
                'text': 'Hello, Grandma',
                'value': json.dumps({
                    'id': '1',
                    'text': 'Hello, Grandma'
                })
            })
    ]

    # Act
    column_value = item.get_column_value(title='Text Column 01')

    # Assert
    ok_(column_value != None)
    eq_(column_value.title, 'Text Column 01')
    eq_(column_value.long_text, 'Hello, Grandma')
    eq_(type(column_value), cv.LongTextValue)
コード例 #7
0
def test_item_should_get_column_values(get_columns, get_board, get_items,
                                       get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    get_board.return_value = en.Board(**{'id': '1', 'name': 'Test Board 1'})
    get_columns.return_value = [
        en.Column({
            'id': 'text_column_01',
            'type': 'text'
        })
    ]
    get_items.return_value = [{
        'id':
        '1',
        'column_values': [{
            'id': 'text_column_01',
            'title': 'Text Column 01',
            'value': json.dumps('Hello, Grandma')
        }]
    }]

    # Act
    column_values = item.get_column_values()

    # Assert
    ok_(column_values != None)
    eq_(len(column_values), 1)
    eq_(column_values[0].title, 'Text Column 01')
    eq_(column_values[0].text_value, 'Hello, Grandma')
コード例 #8
0
def test_should_create_workspace(get_me, create_workspace):

    # Arrange
    id = '12345'
    name = 'Workspace'
    kind = WorkspaceKind.open
    description = 'This is a test workspace.'
    get_me.return_value = GET_ME_RETURN_VALUE
    create_workspace.return_value = {
        'id': id,
        'name': name,
        'kind': kind.name,
        'description': description
    }
    client = MondayClient(USERNAME, '', '')

    # Act
    workspace = client.create_workspace(name, kind, description=description)

    # Assert
    ok_(workspace != None)
    eq_(workspace.id, id)
    eq_(workspace.name, name)
    eq_(workspace.kind, kind.name)
    eq_(workspace.description, description)
コード例 #9
0
def test_item_should_get_list_of_item_updates(get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 01'}]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]
    get_items.return_value = [{
        'id':
        '1',
        'updates': [{
            'id': '2',
            'item_id': '1',
            'creator_id': '1',
            'replies': [{
                'id': '3',
                'creator_id': '1'
            }]
        }]
    }]

    # Act
    updates = item.get_updates()

    # Assert
    ok_(updates != None)
    eq_(len(updates), 1)
    eq_(updates[0].to_primitive(), item.updates[0].to_primitive())
    eq_(len(updates[0].replies), 1)
コード例 #10
0
def test_item_should_add_file(add_file_to_column, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{
        'id': '1',
        'name': 'Test Item 01',
        'board': {
            'id': '1'
        }
    }]
    add_file_to_column.return_value = {
        'id': '12345',
        'name': '33.jpg',
        'url': 'https://test.monday.com/12345/33.jpg'
    }
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]
    file_column = cv.create_column_value(ColumnType.file,
                                         id='files',
                                         title='Files')

    # Act
    asset = item.add_file(file_column, '/Users/test/33.jpg')

    # Assert
    ok_(asset != None)
    eq_(asset.id, '12345')
    eq_(asset.name, '33.jpg')
    eq_(asset.url, 'https://test.monday.com/12345/33.jpg')
コード例 #11
0
def test_should_fail_to_retrieve_assets_with_no_ids(get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    client = MondayClient(USERNAME, '', '')

    # Act
    client.get_assets([])
コード例 #12
0
def test_should_fail_to_retrieve_single_board_due_to_too_many_parameters(
        get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    client = MondayClient(USERNAME, '', '')

    # Act
    client.get_board(id='1', name='Test Board 1')
コード例 #13
0
def test_board_should_fail_to_retrieve_a_group_from_too_many_parameters(create_board, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    create_board.return_value = {'id': '1', 'name': 'Test Board 1'}
    client = MondayClient(USERNAME, '', '')
    board = client.create_board('Test Board 1', BoardKind.public)

    # Act 
    board.get_group(id='group1', title='Group 1')
コード例 #14
0
def test_should_fail_from_too_many_parameters(create_board, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    create_board.return_value = {'id': '1', 'name': 'Test Board 1'}
    client = MondayClient(USERNAME, '', '')
    board = client.create_board('Test Board 1', BoardKind.public)

    # Act 
    board.get_column_value(id='text_column_01', title='Text Column 01')
コード例 #15
0
def test_item_should_fail_to_retrieve_column_value_from_too_many_parameters(
        get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    item.get_column_value(id='text_column_01', title='Text Column 01')
コード例 #16
0
def test_item_should_fail_to_update_column_value_with_invalid_column_value_with_id(
        get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    item.change_column_value(column_value=[1, 2, 3, 4, 5])
コード例 #17
0
def test_item_should_fail_to_update_column_value_with_invalid_column_value(
        get_board, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    get_board.return_value = en.Board(creds=None, id='1', name='Test Board 1')
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    item.change_column_value(column_value='5')
コード例 #18
0
def test_should_fail_to_create_webhook_from_invalid_event(create_board, get_me):

    # Arrange
    board_id = '1'
    get_me.return_value = GET_ME_RETURN_VALUE
    create_board.return_value = {'id': board_id, 'name': 'Test Board 1'}

    client = MondayClient(USERNAME, '', '')
    board = client.create_board('Test Board 1', BoardKind.public)

    # Act
    board.create_webhook('http://test.webhook.com/webhook/test', WebhookEventType.create_item, columnId='test_1')
コード例 #19
0
def test_should_get_items(get_me, get_items):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 1'}]
    client = MondayClient(USERNAME, '', '')

    # Act
    items = client.get_items()

    # Assert
    ok_(items != None)
    ok_(len(items), 1)
コード例 #20
0
def test_should_retrieve_me(get_me, get_me_client):

    # Arrange
    name = 'User 2'
    get_me.return_value = GET_ME_RETURN_VALUE
    get_me_client.return_value = {'id': '1', 'name': name, 'email': USERNAME}
    client = MondayClient(USERNAME, '', '')

    # Act
    user = client.get_me()

    # Assert
    ok_(user != None)
    eq_(user.email, USERNAME)
コード例 #21
0
def test_should_archive_a_board(get_me, archive_board):

    # Arrange
    id = '1'
    get_me.return_value = GET_ME_RETURN_VALUE
    archive_board.return_value = {'id': id}
    client = MondayClient(USERNAME, '', '')

    # Act
    board = client.archive_board(id)

    # Assert
    ok_(board != None)
    eq_(board.id, id)
コード例 #22
0
def test_should_retrieve_list_of_teams(get_me, get_teams):

    # Arrange
    name = 'User 1'
    get_me.return_value = GET_ME_RETURN_VALUE
    get_teams.return_value = [{'id': '1', 'name': name}]
    client = MondayClient(USERNAME, '', '')

    # Act
    teams = client.get_teams()

    # Assert
    ok_(teams != None)
    eq_(len(teams), 1)
    eq_(teams[0].name, name)
コード例 #23
0
def test_should_retrieve_list_of_tags(get_me, get_tags):

    # Arrange
    name = 'Tag 1'
    get_me.return_value = GET_ME_RETURN_VALUE
    get_tags.return_value = [{'id': '1', 'name': name, 'color': 'Black'}]
    client = MondayClient(USERNAME, '', '')

    # Act
    tags = client.get_tags()

    # Assert
    ok_(tags != None)
    eq_(len(tags), 1)
    eq_(tags[0].name, name)
コード例 #24
0
def test_item_should_delete_item(delete_item, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 01'}]
    delete_item.return_value = {'id': '1', 'name': 'Test Item 01'}
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    item = item.delete()

    # Assert
    ok_(item != None)
    eq_(item.name, 'Test Item 01')
コード例 #25
0
def test_item_should_move_item_to_group(move_item_to_group, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 01'}]
    move_item_to_group.return_value = {'id': '1', 'name': 'Test Item 01'}
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    item = item.move_to_group('group_01')

    # Assert
    ok_(item != None)
    eq_(item.name, 'Test Item 01')
コード例 #26
0
def test_should_create_a_notification(get_me, create_notification):

    # Arrange
    text = 'Text 1'
    get_me.return_value = GET_ME_RETURN_VALUE
    create_notification.return_value = {'id': '1', 'text': text}
    client = MondayClient(USERNAME, '', '')

    # Act
    notification = client.create_notification(text, '1', '2',
                                              NotificationTargetType.Post)

    # Assert
    ok_(notification != None)
    ok_(notification.text, text)
コード例 #27
0
def test_user_should_send_a_notification(create_notification, get_users, get_me):

    # Arrange 
    get_me.return_value = GET_ME_RETURN_VALUE
    get_users.return_value = [{'id': '1', 'email': '*****@*****.**'}]
    create_notification.return_value = {'id': '1', 'text': 'Text 1'}
    client = MondayClient(USERNAME, '', '')
    user = client.get_users()[0]

    # Act 
    notification = user.send_notification('Text 1', '2', NotificationTargetType.Post)

    # Assert
    ok_(notification != None)
    ok_(notification.text, 'Text 1')
コード例 #28
0
def test_item_should_add_update(create_update, get_items, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_items.return_value = [{'id': '1', 'name': 'Test Item 01'}]
    create_update.return_value = {'id': '1', 'body': 'This is a text body'}
    client = MondayClient(USERNAME, '', '')
    item = client.get_items()[0]

    # Act
    update = item.add_update('This is a text body')

    # Assert
    ok_(update != None)
    eq_(update.body, 'This is a text body')
コード例 #29
0
def test_user_should_get_the_account(get_users, get_me):

    # Arrange
    get_me.return_value = GET_ME_RETURN_VALUE
    get_users.return_value = [{'id': '1', 'email': '*****@*****.**'}]
    client = MondayClient(USERNAME, '', '')
    user = client.get_users()[0]

    get_users.return_value = [{'id': '1', 'account': {'id': '1', 'name': 'Account 1', 'first_day_of_the_week': None, 'show_timeline_weekends': None, 'slug': None}}]

    # Act
    account = user.get_account()

    # Assert
    ok_(account != None)
    eq_(account.name, 'Account 1')
コード例 #30
0
def test_should_retrieve_a_list_of_boards(get_me, get_boards):

    # Arrange
    test_boards = [{'id': '1', 'name': 'Board 1'}]
    get_me.return_value = GET_ME_RETURN_VALUE
    get_boards.return_value = test_boards
    client = MondayClient(USERNAME, '', '')

    # Act
    boards = client.get_boards()

    # Assert
    ok_(boards != None)
    eq_(len(boards), 1)
    eq_(boards[0].id, test_boards[0]['id'])
    eq_(boards[0].name, test_boards[0]['name'])