atsid/circuits-js

View on GitHub
test/TestDojoReadApiPlugin.js

Summary

Maintainability
A
0 mins
Test Coverage
define([
    "circuits/plugins/DojoReadApiPlugin",
    "circuits/ServiceFactory",
    "Schema/services/CaseService",
    "circuits/Logger",
    "circuits/DojoXhrDataProvider"
], function (
    ApiPlugin,
    Factory,
    CaseService,
    OreLogger,
    DojoXhrDataProvider
) {

        /*
         *            caseDocPlugin = new circuits.plugins.DojoReadApiPlugin({
         *               pointcut: "CaseDocumentsService.*",
         *               name: "caseDocGetValueMixin",
         *               identityAttributes: "id",
         *               methodName: function (args) {
         *                   dojo.mixin(args, {caseNumber: this.caseNumber});
         *                   this.queryOfficeActionsOnly(args, {onLoad: function (items, request) {
         *                       this.scope.actedItems = items;
         *                       dojo.forEach(items, function (item) {
         *                           item.label = item.title + ' ' + PTO.formatters.dateDisplay(item.date);
         *                           item.id = String(item.documentId);
         *                       });
         *                       //Add default value
         *                       items.splice(0, 0, {label: 'Any', id: '0'});
         *                       args.onComplete.call(args.scope, items, request);
         *                   }});
         *               });

         *               methodArgs: ["caseNumber"]
         *           }),
         *
         *            caseDocPlugin = new circuits.plugins.DojoReadApiPlugin({
         *               pointcut: "CaseDocumentsService.*",
         *               name: "caseDocGetValueMixin",
         *               identityAttributes: "id",
         *               methodName: "queryDocumentList",
         *               methodArgs: ["caseNumber"]
         *           }),
         *
         *           caseDocumentStore = PTO.service.get("CaseDocuments", [caseDocPlugin]);
         */
        var b,
            conf = new OreLogger("debug"),
            apiPlugin = new ApiPlugin({
                identityAttributes: 'caseNumber',
                methodName: 'readCase',
                methodArgs: 'caseNumber'
            }),
            factory = new Factory({provider: new DojoXhrDataProvider()}),
            item1 = {
                number10: 10,
                stringBlah: "Blah",
                innerObject: {
                    innerProp: true
                },

                undefinedNum: undefined,
                undefinedString: undefined,
                undefinedNull: undefined,
                undefinedUndefined: undefined,
                nullStaysNull: null
            },
            item2 = {

            };

        describe("TestDojoReadApiPlugin", function() {

            //Tests that the constructor properly instantiates properties
            it("testDefaultConstructor",  function () {
                var service = factory.getService(CaseService, {});

                assert.equal("mixin", apiPlugin.type);

                assert.equal(undefined, service.getValue);
                apiPlugin.fn(service);
                assertNotEquals(undefined, service.getValue);

            });


            //Test fetch with service string
            it("testFetchServiceString",  function () {
                var service = factory.getService(CaseService, {}),
                    shouldBe10,
                    args;
                args = {caseNumber: '123'};
                apiPlugin.fn(service);
                shouldBe10 = service.fetch(args);
                conf.debug(shouldBe10);
            });


            //Test fetch with a passed in function.
            it("testFetchServiceFunction",  function () {
                var myApiPlugin = new ApiPlugin({
                        identityAttributes: 'caseNumber',
                        methodName: function (args) {
                            var retVal = {};
                            retVal.id = 17;
                            retVal[this.getIdentityAttributes()] = '23.98767';
                            retVal.description = 'This is just for testing';
                            return retVal;
                        },
                        methodArgs: 'caseNumber'
                    }),
                    service = factory.getService(CaseService, {}),
                    serviceReturn,
                    args = {caseNumber: '123'};
                myApiPlugin.fn(service);
                serviceReturn = service.fetch(args);
                assert.equal(17, serviceReturn.id);
                assert.equal('23.98767', serviceReturn.caseNumber);
            });


            //Test that the fetch will call onBegin() when onComplete() is called.
            it("testFetchCallsOnBegin",  function () {
                var service = factory.getService(CaseService, {}),
                    shouldBe10,
                    calledOnBegin,
                    calledOnComplete,
                    args;

                args = {
                    caseNumber: '123',
                    onBegin: function () {
                        calledOnBegin = true;
                    },

                    onComplete: function () {
                        calledOnComplete = true;
                    }
                };
                service.readCase = function (args, handles) {
                    handles.load();
                };
                apiPlugin.fn(service);
                shouldBe10 = service.fetch(args);
                conf.debug(shouldBe10);

                assert.isTrue('Testing the onBegin handler', calledOnBegin);
                assert.isTrue('Testing the onComplete handler', calledOnComplete);
            });


            //Test the getValue function.
            it("testGetValue",  function () {
                var service = factory.getService(CaseService, {}),
                    shouldBeTrue,
                    shouldBe40,
                    shouldBeNewStr,
                    shouldBeNull,
                    shouldBeUndefined;

                apiPlugin.fn(service);
                shouldBeTrue = service.getValue(item1, "innerObject.innerProp");
                shouldBe40 = service.getValue(item2, "undefinedNum", 40);
                shouldBeNewStr = service.getValue(item2, "undefinedString", "NewStr");
                shouldBeNull = service.getValue(item2, "undefinedNull", null);
                shouldBeUndefined = service.getValue(item2, "undefinedUndefined", undefined);

                assert.isTrue(shouldBeTrue);

                assert.equal(40, shouldBe40);
                assert.equal("NewStr", shouldBeNewStr);
                assert.equal(null, shouldBeNull);
                assert.equal(undefined, shouldBeUndefined);

                assert.equal(undefined, item2.undefinedNum);
                assert.equal(undefined, item2.undefinedString);
                assert.equal(undefined, item2.undefinedNull);
                assert.equal(undefined, item2.undefinedUndefined);
            });


            it("testGetIdentity",  function () {
                var service = factory.getService(CaseService, {}),
                    item = {caseNumber: '12.9878',
                            description: 'This is just a description.',
                            id: 17,
                            documentId: '98.454.9874'};
                apiPlugin.fn(service);

                assert.equal('12.9878', service.getIdentity(item));
            });


            it("testGetIdentityAttributesDefined",  function () {
                var service = factory.getService(CaseService, {});
                apiPlugin.fn(service);

                assert.equal('caseNumber', service.getIdentityAttributes());
            });


            it("testGetIdentityAttributesUndefined",  function () {
                var service = factory.getService(CaseService, {}),
                    myApiPlugin = new ApiPlugin({
                        methodName: 'readCase',
                        methodArgs: 'caseNumber'
                    });
                myApiPlugin.fn(service);

                assert.equal('id', service.getIdentityAttributes());
            }
        });
    });