UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

690 lines (671 loc) • 17.9 kB
import { ALIGN_CENTER, ALIGN_LEFT, ALIGN_RIGHT, DISPLAY_MODE_DYNAMIC, DISPLAY_MODE_FIXED, FIT_POSITION, IMAGE_POSITION, IMAGE_SIZING_FILL, IMAGE_SIZING_FIT, secondaryImage, POSITION_OVER_IMAGE, VISIBILITY_ALWAYS, VISIBILITY_DEFAULT, VISIBILITY_FOCUSED, } from ".."; const basicConditions = { rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, ], }; const forDisplayModeFixedConditionsOnly = { rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_display_mode", condition_value: DISPLAY_MODE_FIXED, }, ], }; const forDisplayModeDynamicConditionsOnly = { rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_display_mode", condition_value: DISPLAY_MODE_DYNAMIC, }, ], }; const forPositionOverImageConditionsOnly = { rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_position", condition_value: POSITION_OVER_IMAGE, }, ], }; const forImageSizingFitConditionsOnly = { rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_display_mode", condition_value: DISPLAY_MODE_FIXED, }, { key: "assets/secondary_image_image_sizing", condition_value: IMAGE_SIZING_FIT, }, ], }; describe("secondaryImage", () => { it("generate secondary-image configuration - enabled, fixed and dynamic display_mode", () => { const enable = true; const imageKey = "thumb_1"; const visibility = VISIBILITY_ALWAYS; const fixedHeight = 1; const fixedWidth = 2; const imageSizing = IMAGE_SIZING_FIT; const fitPosition = FIT_POSITION.CENTER; const dynamicWidth = 3; const cornerRadius = 4; const marginTop = 5; const marginRight = 6; const marginBottom = 7; const marginLeft = 8; const textLabels = ["text_label_1"]; const position = "above_text_label_1"; const align = ALIGN_LEFT; const imagePosition = IMAGE_POSITION.CENTER; const output = { group: true, label: "Secondary Image", tooltip: "", folded: false, fields: [ { initial_value: enable, key: "secondary_image_switch", label: "Enable", type: "switch", }, { initial_value: imageKey, key: "secondary_image_image_key", type: "text_input", label: "Image Key", ...basicConditions, }, { initial_value: visibility, type: "select", key: "secondary_image_visibility", label: "Visibility", options: [ { text: "Always", value: VISIBILITY_ALWAYS, }, { text: "Default", value: VISIBILITY_DEFAULT, }, { text: "Focused", value: VISIBILITY_FOCUSED, }, ], ...basicConditions, }, { initial_value: DISPLAY_MODE_FIXED, type: "select", key: "secondary_image_display_mode", label: "Display Mode", label_tooltip: "Power Cell 1 and 2 only supports fixed display mode for secondary image. Dynamic mode will be supported only in Power Cell 3.", options: [ { text: "Fixed", value: DISPLAY_MODE_FIXED, }, { text: "Dynamic", value: DISPLAY_MODE_DYNAMIC, }, ], ...basicConditions, }, { initial_value: fixedWidth, type: "number_input", label: "Width", key: "secondary_image_fixed_width", ...forDisplayModeFixedConditionsOnly, }, { initial_value: fixedHeight, type: "number_input", label: "Height", key: "secondary_image_fixed_height", ...forDisplayModeFixedConditionsOnly, }, { initial_value: imageSizing, type: "select", key: "secondary_image_image_sizing", label: "Image Sizing", options: [ { text: "Fit", value: IMAGE_SIZING_FIT, }, { text: "Fill", value: IMAGE_SIZING_FILL, }, ], ...forDisplayModeFixedConditionsOnly, }, { initial_value: fitPosition, type: "select", key: "secondary_image_fit_position", label: "Fit Position", options: [ { text: "Center", value: FIT_POSITION.CENTER, }, { text: "Center Left", value: FIT_POSITION.CENTER_LEFT, }, { text: "Center Right", value: FIT_POSITION.CENTER_RIGHT, }, { text: "Bottom Center", value: FIT_POSITION.BOTTOM_CENTER, }, { text: "Bottom Left", value: FIT_POSITION.BOTTOM_LEFT, }, { text: "Bottom Right", value: FIT_POSITION.BOTTOM_RIGHT, }, { text: "Top Center", value: FIT_POSITION.TOP_CENTER, }, { text: "Top Left", value: FIT_POSITION.TOP_LEFT, }, { text: "Top Right", value: FIT_POSITION.TOP_RIGHT, }, ], ...forImageSizingFitConditionsOnly, }, { initial_value: dynamicWidth, type: "number_input", label: "Width", key: "secondary_image_dynamic_width", ...forDisplayModeDynamicConditionsOnly, }, { initial_value: position, type: "select", key: "secondary_image_position", label: "Position", options: [ { text: "Over Image", value: POSITION_OVER_IMAGE, }, { text: "Above Text Label 1", value: "above_text_label_1", }, { text: "Below Text Label 1", value: "below_text_label_1", }, ], ...basicConditions, }, { initial_value: align, type: "select", key: "secondary_image_align", label: "Align", options: [ { text: "Left", value: ALIGN_LEFT, }, { text: "Center", value: ALIGN_CENTER, }, { text: "Right", value: ALIGN_RIGHT, }, ], rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_position", condition_value: ["above_text_label_1", "below_text_label_1"], }, ], }, { initial_value: imagePosition, type: "select", key: "secondary_image_image_position", label: "Image Position", options: [ { text: "Center", value: IMAGE_POSITION.CENTER, }, { text: "Top Left", value: IMAGE_POSITION.TOP_LEFT, }, { text: "Top Right", value: IMAGE_POSITION.TOP_RIGHT, }, { text: "Bottom Left", value: IMAGE_POSITION.BOTTOM_LEFT, }, { text: "Bottom Right", value: IMAGE_POSITION.BOTTOM_RIGHT, }, ], ...forPositionOverImageConditionsOnly, }, { initial_value: cornerRadius, type: "number_input", label: "Corner Radius", key: "secondary_image_corner_radius", ...basicConditions, }, { initial_value: marginTop, type: "number_input", label: "Margin Top", key: "secondary_image_margin_top", ...basicConditions, }, { initial_value: marginRight, type: "number_input", label: "Margin Right", key: "secondary_image_margin_right", ...basicConditions, }, { initial_value: marginBottom, type: "number_input", label: "Margin Bottom", key: "secondary_image_margin_bottom", ...basicConditions, }, { initial_value: marginLeft, type: "number_input", label: "Margin Left", key: "secondary_image_margin_left", ...basicConditions, }, ], }; const result = secondaryImage({ enable, imageKey, visibility, displayMode: { default: DISPLAY_MODE_FIXED, availableModes: [DISPLAY_MODE_FIXED, DISPLAY_MODE_DYNAMIC], }, fixedHeight, fixedWidth, imageSizing, fitPosition, dynamicWidth, position: { default: position, textLabels, }, align, imagePosition, cornerRadius, marginTop, marginRight, marginBottom, marginLeft, }); expect(result).toEqual(output); }); it("generate secondary-image configuration - enabled, fixed only display_mode, no visibility", () => { const enable = true; const imageKey = "thumb_1"; const fixedHeight = 1; const fixedWidth = 2; const imageSizing = IMAGE_SIZING_FILL; const fitPosition = FIT_POSITION.CENTER_LEFT; const cornerRadius = 3; const marginTop = 4; const marginRight = 5; const marginBottom = 6; const marginLeft = 7; const textLabels = ["text_label_1", "text_label_2"]; const position = "below_text_label_2"; const align = ALIGN_CENTER; const imagePosition = IMAGE_POSITION.BOTTOM_LEFT; const output = { group: true, label: "Secondary Image", tooltip: "", folded: false, fields: [ { initial_value: enable, key: "secondary_image_switch", label: "Enable", type: "switch", }, { initial_value: imageKey, key: "secondary_image_image_key", type: "text_input", label: "Image Key", rules: "conditional", ...basicConditions, }, { initial_value: DISPLAY_MODE_FIXED, type: "select", key: "secondary_image_display_mode", label: "Display Mode", label_tooltip: "Power Cell 1 and 2 only supports fixed display mode for secondary image. Dynamic mode will be supported only in Power Cell 3.", options: [ { text: "Fixed", value: DISPLAY_MODE_FIXED, }, ], ...basicConditions, }, { initial_value: fixedWidth, type: "number_input", label: "Width", key: "secondary_image_fixed_width", ...forDisplayModeFixedConditionsOnly, }, { initial_value: fixedHeight, type: "number_input", label: "Height", key: "secondary_image_fixed_height", ...forDisplayModeFixedConditionsOnly, }, { initial_value: imageSizing, type: "select", key: "secondary_image_image_sizing", label: "Image Sizing", options: [ { text: "Fit", value: IMAGE_SIZING_FIT, }, { text: "Fill", value: IMAGE_SIZING_FILL, }, ], ...forDisplayModeFixedConditionsOnly, }, { initial_value: fitPosition, type: "select", key: "secondary_image_fit_position", label: "Fit Position", options: [ { text: "Center", value: FIT_POSITION.CENTER, }, { text: "Center Left", value: FIT_POSITION.CENTER_LEFT, }, { text: "Center Right", value: FIT_POSITION.CENTER_RIGHT, }, { text: "Bottom Center", value: FIT_POSITION.BOTTOM_CENTER, }, { text: "Bottom Left", value: FIT_POSITION.BOTTOM_LEFT, }, { text: "Bottom Right", value: FIT_POSITION.BOTTOM_RIGHT, }, { text: "Top Center", value: FIT_POSITION.TOP_CENTER, }, { text: "Top Left", value: FIT_POSITION.TOP_LEFT, }, { text: "Top Right", value: FIT_POSITION.TOP_RIGHT, }, ], ...forImageSizingFitConditionsOnly, }, { initial_value: position, type: "select", key: "secondary_image_position", label: "Position", options: [ { text: "Over Image", value: POSITION_OVER_IMAGE, }, { text: "Above Text Label 1", value: "above_text_label_1", }, { text: "Below Text Label 1", value: "below_text_label_1", }, { text: "Above Text Label 2", value: "above_text_label_2", }, { text: "Below Text Label 2", value: "below_text_label_2", }, ], ...basicConditions, }, { initial_value: align, type: "select", key: "secondary_image_align", label: "Align", options: [ { text: "Left", value: ALIGN_LEFT, }, { text: "Center", value: ALIGN_CENTER, }, { text: "Right", value: ALIGN_RIGHT, }, ], rules: "all_conditions", conditional_fields: [ { key: "assets/secondary_image_switch", condition_value: true, }, { key: "assets/secondary_image_position", condition_value: [ "above_text_label_1", "below_text_label_1", "above_text_label_2", "below_text_label_2", ], }, ], }, { initial_value: imagePosition, type: "select", key: "secondary_image_image_position", label: "Image Position", options: [ { text: "Center", value: IMAGE_POSITION.CENTER, }, { text: "Top Left", value: IMAGE_POSITION.TOP_LEFT, }, { text: "Top Right", value: IMAGE_POSITION.TOP_RIGHT, }, { text: "Bottom Left", value: IMAGE_POSITION.BOTTOM_LEFT, }, { text: "Bottom Right", value: IMAGE_POSITION.BOTTOM_RIGHT, }, ], ...forPositionOverImageConditionsOnly, }, { initial_value: cornerRadius, type: "number_input", label: "Corner Radius", key: "secondary_image_corner_radius", ...basicConditions, }, { initial_value: marginTop, type: "number_input", label: "Margin Top", key: "secondary_image_margin_top", ...basicConditions, }, { initial_value: marginRight, type: "number_input", label: "Margin Right", key: "secondary_image_margin_right", ...basicConditions, }, { initial_value: marginBottom, type: "number_input", label: "Margin Bottom", key: "secondary_image_margin_bottom", ...basicConditions, }, { initial_value: marginLeft, type: "number_input", label: "Margin Left", key: "secondary_image_margin_left", ...basicConditions, }, ], }; const result = secondaryImage({ enable, imageKey, displayMode: { default: DISPLAY_MODE_FIXED, availableModes: [DISPLAY_MODE_FIXED], }, fixedHeight, fixedWidth, imageSizing, fitPosition, position: { default: position, textLabels, }, align, imagePosition, cornerRadius, marginTop, marginRight, marginBottom, marginLeft, }); expect(result).toEqual(output); }); });