define([
  'common/views/module',
  'extensions/collections/collection',
  'extensions/models/model',
  'extensions/views/view'
],
function (ModuleView, Collection, Model, View) {
  describe("ModuleView", function () {

    var moduleView, model;

    var getContent = function () {
      return moduleView.$el[0].outerHTML.replace(/>\s+?</g, '><');
    };

    beforeEach(function() {
      var Visualisation = View.extend({
        render: function () {
          this.$el.html('test content');
        }
      });
      model = new Model({
        title: 'Title'
      });
      var collection = new Collection();
      moduleView = new ModuleView({
        visualisationClass: Visualisation,
        className: 'testclass',
        collection: collection,
        model: model
      });
    });

    it("renders a module", function () {
      moduleView.render();
      expect(getContent()).toEqual('<section class="testclass"><h1>Title</h1><div class="visualisation">test content</div></section>');
    });

    it("renders a module with description", function () {
      model.set('description', 'Description');
      moduleView.render();
      expect(getContent()).toEqual('<section class="testclass"><h1>Title</h1><h2>Description</h2><div class="visualisation">test content</div></section>');
    });

    it("renders a module with description and info", function () {
      model.set('description', 'Description');
      model.set('info', ['Info line 1', 'Info line 2']);
      moduleView.render();
      expect(getContent()).toEqual('<section class="testclass"><h1>Title</h1><aside class="more-info"><span class="more-info-link">more info</span><ul><li>Info line 1</li><li>Info line 2</li></ul></aside><h2>Description</h2><div class="visualisation">test content</div></section>');
    });

    it("renders an SVG-based module as a fallback element on the server", function () {
      jasmine.serverOnly(function () {
        moduleView.requiresSvg = true;
        moduleView.url = '/test/url';
        moduleView.render();

        // normalise jsdom and phantomjs output
        var content = getContent()
          .replace('&lt;', '<')
          .replace('&gt;', '>')
          .replace(' />', '/>');

        expect(content).toEqual('<section class="testclass"><h1>Title</h1><div class="visualisation-fallback" data-src="/test/url.png"><noscript><img src="/test/url.png"/></noscript></div></section>');
      });
    });

    it("renders an SVG-based module as normal on the client", function () {
      jasmine.clientOnly(function () {
        moduleView.requiresSvg = true;
        moduleView.render();
        expect(getContent()).toEqual('<section class="testclass"><h1>Title</h1><div class="visualisation">test content</div></section>');
      });
    });

    it("renders a module with classes module-banner and restricted-data-banner when Stagecraft sets restricted_data to true", function () {
      model.set('restricted_data', true);
      moduleView.render();
      expect(getContent()).toEqual('<section class="testclass module-banner restricted-data-banner"><div class="module-banner-text"><p>This section contains <strong>commercially licensed data</strong>. Do not share or redistribute outside government.</p></div><h1>Title</h1><div class="visualisation">test content</div></section>');
    });

    it("renders a module without classes module-banner and restricted-data-banner when Stagecraft returns restricted_data false", function () {
      model.set('restricted_data', false);
      moduleView.render();
      expect(getContent()).toEqual('<section class="testclass"><h1>Title</h1><div class="visualisation">test content</div></section>');
    });
  });
});

@@ -1785,32 +1785,635 @@
 on%3E');%0A    %7D);%0A%0A
+    it(%22renders a module with description and info link%22, function () %7B%0A      model.set('description', 'Description');%0A      model.set('info', %5B'%3Ca href=%22https://example.com/%22%3EInfo line 1%3C/a%3E with trailing text', 'Info line 2'%5D);%0A      moduleView.render();%0A      expect(getContent()).toEqual('%3Csection class=%22testclass%22%3E%3Ch1%3ETitle%3C/h1%3E%3Caside class=%22more-info%22%3E%3Cspan class=%22more-info-link%22%3Emore info%3C/span%3E%3Cul%3E%3Cli%3E%3Ca href=%22https://example.com/%22%3EInfo line 1%3C/a%3E with trailing text%3C/li%3E%3Cli%3EInfo line 2%3C/li%3E%3C/ul%3E%3C/aside%3E%3Ch2%3EDescription%3C/h2%3E%3Cdiv class=%22visualisation%22%3Etest content%3C/div%3E%3C/section%3E');%0A    %7D);%0A%0A
     it(%22renders 

Add test to verify the desired behaviour