#!perl
use Cassandane::Tiny;

sub test_calendarevent_attendee_noorganizer
    :min_version_3_5
    ($self)
{
    my $jmap = $self->default_user->jmap;
    my $default_cal_id = $self->default_user->calendars->default->id;

    my $caldav = $self->{caldav};

    xlog "Create event via CalDAV";
    my ($eventId, $ical) = $self->icalfile('attendee_noorganizer');
    my $event = $self->putandget_vevent($eventId, $ical);
    my $wantParticipants = hashbag(
        ignore() => {
            '@type' => 'Participant',
            'calendarAddress' => 'mailto:attendee@local',
        },
    );
    $self->assert_cmp_deeply($wantParticipants, $event->{participants});
    $self->assert_null($event->{organizerCalendarAddress});

    my $participants = {
        attendee => {
            '@type' => 'Participant',
            calendarAddress => 'mailto:attendee@local',
        },
    };
    xlog "Update event via JMAP";
    my $res = $jmap->CallMethods([
        ['CalendarEvent/set', {
            update => {
                $eventId => {
                    participants => $participants,
                },
            },
        }, 'R1'],
        ['CalendarEvent/get', {
            ids => [$eventId],
            properties => ['participants', 'organizerCalendarAddress', 'x-href'],
        }, 'R2'],
    ]);
    $self->assert(exists $res->[0][1]{updated}{$eventId});
    $self->assert_cmp_deeply($wantParticipants, $res->[1][1]{list}[0]{participants});
    $self->assert_null($res->[1][1]{list}[0]{organizerCalendarAddress});

    my $xhref = $res->[1][1]{list}[0]{'x-href'};
    $self->assert_not_null($xhref);

    xlog "Validate no ORGANIZER got added";
    $res = $caldav->Request('GET', $xhref);
    $self->assert(not($res->{content} =~ m/ORGANIZER/));
    $self->assert($res->{content} =~ m/ATTENDEE/);
}
