Package org.waveprotocol.wave.media.model

Source Code of org.waveprotocol.wave.media.model.AttachmentDocumentWrapperTest

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.waveprotocol.wave.media.model;


import junit.framework.TestCase;

import org.waveprotocol.wave.media.model.Attachment.ImageMetadata;
import org.waveprotocol.wave.media.model.Attachment.Status;
import org.waveprotocol.wave.model.document.Doc;
import org.waveprotocol.wave.model.document.ObservableDocument;
import org.waveprotocol.wave.model.testing.BasicFactories;

/**
* Tests that the AttachmentDocumentWrapper correctly passes data to and from its underlying
* MutableDocument.
*
*/

public class AttachmentDocumentWrapperTest extends TestCase {
  private static final String CREATOR = "a_user";
  private static final String FILENAME = "a file.jpg";
  private static final Long SIZE = 123456789123L;
  private static final String MIME_TYPE = "image/jpeg";
  private static final long UPLOAD_PROGRESS = 12345L;
  private static final Attachment.Status UPLOAD_STATUS = Status.IN_PROGRESS;

  private static final int IMAGE_HEIGHT = 123;
  private static final int IMAGE_WIDTH = 234;
  private static final int THUMB_HEIGHT = 345;
  private static final int THUMB_WIDTH = 456;

  /**
   * Tests that all of the basic fields (ie excluding thumbnail and image metadata) can be correctly
   * read.
   */
  public void testBasicMetadata() {
    MutableClientAttachment wrapper = createBasicWrapper();
    checkBasicFields(wrapper);
    assertNull(wrapper.getContentImageMetadata());
    assertNull(wrapper.getThumbnailImageMetadata());
  }

  /**
   * Tests that all of the fields are correctly populated, including thumbnail and image metadata.
   */
  public void testFullWrapper() {
    AttachmentDocumentWrapper<Doc.N, Doc.E, Doc.T> wrapper = createFullWrapper();
    checkBasicFields(wrapper);
    checkElementFields(wrapper);
  }

  /**
   * Tests that mutations are correctly persisted.
   */
  public void testMutableWrapper() {
    MutableClientAttachment wrapper = createBasicWrapper();

    wrapper.setSize(SIZE + 1);
    wrapper.setFilename(FILENAME + ".foo");
    wrapper.setMalware(true);
    wrapper.setMimeType(MIME_TYPE + "!");
    wrapper.setStatus(UPLOAD_STATUS);
    wrapper.setUploadedByteCount(UPLOAD_PROGRESS + 1);

    wrapper.setThumbnail(THUMB_WIDTH, THUMB_HEIGHT);
    wrapper.setImage(IMAGE_WIDTH, IMAGE_HEIGHT);

    assertEquals(FILENAME + ".foo", wrapper.getFilename());
    assertEquals(MIME_TYPE + "!", wrapper.getMimeType());
    assertEquals(Long.valueOf(SIZE + 1), wrapper.getSize());
    assertEquals(UPLOAD_STATUS, wrapper.getStatus());
    assertEquals(UPLOAD_PROGRESS + 1, wrapper.getUploadedByteCount());

    assertTrue(wrapper.isMalware());

    checkElementFields(wrapper);
  }

  /**
   * Checks that all of the attribute fields have been set correctly.
   *
   * @param wrapper the wrapper to check
   */
  private static void checkBasicFields(MutableClientAttachment wrapper) {
    assertEquals(FILENAME, wrapper.getFilename());
    assertEquals(CREATOR, wrapper.getCreator());
    assertEquals(MIME_TYPE, wrapper.getMimeType());
    assertEquals(SIZE, wrapper.getSize());
    assertEquals(UPLOAD_PROGRESS, wrapper.getUploadedByteCount());
    assertEquals(UPLOAD_STATUS, wrapper.getStatus());

    assertFalse(wrapper.isMalware());
  }

  /**
   * Checks the values on the thumbnail and image metadata fields.
   *
   * @param wrapper the wrapper
   */
  private static void checkElementFields(MutableClientAttachment wrapper) {
    ImageMetadata attachmentImage = wrapper.getContentImageMetadata();
    assertEquals(IMAGE_HEIGHT, attachmentImage.getHeight());
    assertEquals(IMAGE_WIDTH, attachmentImage.getWidth());

    ImageMetadata attachmentThumbnail = wrapper.getThumbnailImageMetadata();
    assertEquals(THUMB_HEIGHT, attachmentThumbnail.getHeight());
    assertEquals(THUMB_WIDTH, attachmentThumbnail.getWidth());
  }

  /**
   * Creates a basic wrapper, missing the optional image and thumbnail metadata fields.
   *
   * @return the new wrapper
   */
  private AttachmentDocumentWrapper<Doc.N, Doc.E, Doc.T> createBasicWrapper() {
    ObservableDocument document = BasicFactories.observableDocumentProvider()
        .parse(String.format(
            "<node key=\"upload_progress\" value=\"%d\"/>"
                + "<node key=\"creator\" value=\"%s\"/>"
                + "<node key=\"attachment_size\" value=\"%d\"/>"
                + "<node key=\"malware\" value=\"false\"/>"
                + "<node key=\"status\" value=\"%s\"/>"
                + "<node key=\"filename\" value=\"%s\"/>"
                + "<node key=\"mime_type\" value=\"%s\"/>",
            UPLOAD_PROGRESS, CREATOR, SIZE, UPLOAD_STATUS, FILENAME, MIME_TYPE));

    return new AttachmentDocumentWrapper<Doc.N, Doc.E, Doc.T>(document);
  }

  /**
   * Creates a full wrapper with image and thumbnail elements populated.
   *
   * @return the new wrapper
   */
  private AttachmentDocumentWrapper<Doc.N, Doc.E, Doc.T> createFullWrapper() {
    ObservableDocument document = BasicFactories.observableDocumentProvider()
        .parse(String.format(
            "<node key=\"upload_progress\" value=\"%d\"/>"
            + "<node key=\"creator\" value=\"%s\"/>"
            + "<node key=\"attachment_size\" value=\"%d\"/>"
            + "<node key=\"malware\" value=\"false\"/>"
            + "<node key=\"status\" value=\"%s\"/>"
            + "<node key=\"filename\" value=\"%s\"/>"
            + "<node key=\"mime_type\" value=\"%s\"/>"
            + "<node key=\"image_height\" value=\"%d\"/>"
            + "<node key=\"image_width\" value=\"%d\"/>"
            + "<node key=\"thumbnail_height\" value=\"%d\"/>"
            + "<node key=\"thumbnail_width\" value=\"%d\"/>",
            UPLOAD_PROGRESS, CREATOR, SIZE, UPLOAD_STATUS, FILENAME, MIME_TYPE, IMAGE_HEIGHT,
            IMAGE_WIDTH, THUMB_HEIGHT, THUMB_WIDTH));

    return new AttachmentDocumentWrapper<Doc.N, Doc.E, Doc.T>(document);
  }
}
TOP

Related Classes of org.waveprotocol.wave.media.model.AttachmentDocumentWrapperTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.