/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

const { CFRMessageProvider } = ChromeUtils.importESModule(
  "resource:///modules/asrouter/CFRMessageProvider.sys.mjs"
);

add_task(async function test_multiMessageTreatment() {
  const { experimentValidator } = await makeValidators();
  // Use the entire list of messages as if it was a single treatment branch's
  // feature value.
  let messages = await CFRMessageProvider.getMessages();
  let featureValue = { template: "multi", messages };
  assertValidates(
    experimentValidator,
    featureValue,
    `Multi-message treatment validates as MessagingExperiment`
  );
  for (const message of messages) {
    assertValidates(
      experimentValidator,
      message,
      `Message ${message.id} validates as MessagingExperiment`
    );
  }

  // Add an invalid message to the list and make sure it fails validation.
  messages.push({
    id: "INVALID_MESSAGE",
    template: "cfr_doorhanger",
  });
  const result = experimentValidator.validate(featureValue);
  Assert.ok(
    !(result.valid && result.errors.length === 0),
    "Multi-message treatment with invalid message fails validation"
  );
});
