Beispiel #1
0
    def test_wf_module_data_versions(self):
        firstver = self.wf_module1.store_fetched_table(mock_csv_table)
        self.wf_module1.set_fetched_data_version(firstver)
        secondver = self.wf_module1.store_fetched_table(mock_csv_table2)

        # retrieve version list through the API
        response = self.client.get('/api/wfmodules/%d/dataversion' %
                                   self.wf_module1.id)
        self.assertIs(response.status_code, status.HTTP_200_OK)
        versiondata = {
            "versions": [[secondver.strftime("%Y-%m-%dT%H:%M:%S.%fZ"), False],
                         [firstver.strftime("%Y-%m-%dT%H:%M:%S.%fZ"), False]],
            "selected":
            firstver.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
        }
        responsedata = json.loads(response.content.decode('UTF-8'))
        self.assertEqual(responsedata, versiondata)

        # set the version back to latest through API.
        # using factory.patch as trouble getting client.patch to work (400 -- authentication?)
        # More or less the same thing, but does skip urls.py
        request = self._build_patch(
            '/api/wfmodules/%d/dataversion' % self.wf_module1.id,
            {'selected': secondver.strftime("%Y-%m-%dT%H:%M:%S.%fZ")},
            user=self.user)
        response = wfmodule_dataversion(request, pk=self.wf_module1.id)
        self.assertIs(response.status_code, status.HTTP_204_NO_CONTENT)
        self.wf_module1.refresh_from_db()
        self.assertEqual(self.wf_module1.get_fetched_data_version(), secondver)
Beispiel #2
0
    def test_wf_module_data_versions(self):
        text1 = 'just pretend this is json'
        text2 = 'and this is a later version'

        # nothing ever stored
        nothing = self.wfmodule1.retrieve_data()
        self.assertIsNone(nothing)

        # save and recover data
        ver1 = self.wfmodule1.store_data(text1)
        self.wfmodule1.set_stored_data_version(ver1)
        self.wfmodule1.save()
        self.wfmodule1.refresh_from_db()
        textout = self.wfmodule1.retrieve_data()
        self.assertEqual(textout, text1)
        firstver = self.wfmodule1.get_stored_data_version()

        # create another version
        secondver = self.wfmodule1.store_data(text2)
        self.wfmodule1.set_stored_data_version(secondver)
        self.assertNotEqual(firstver, secondver)
        textout = self.wfmodule1.retrieve_data()
        self.assertEqual(textout, text2)

        # change the version back
        self.wfmodule1.set_stored_data_version(firstver)
        textout = self.wfmodule1.retrieve_data()
        self.assertEqual(textout, text1)

        # invalid version string should error
        with self.assertRaises(ValueError):
            self.wfmodule1.set_stored_data_version('foo')

        # list versions
        verlist = self.wfmodule1.list_stored_data_versions()
        self.assertListEqual(
            verlist,
            [firstver, secondver])  # sorted by creation date, ascending

        # but like, none of this should have created versions on any other wfmodule
        self.assertEqual(self.wfmodule2.list_stored_data_versions(), [])

        # retrieve version list through the API
        response = self.client.get('/api/wfmodules/%d/dataversion' %
                                   self.wfmodule1.id)
        self.assertIs(response.status_code, status.HTTP_200_OK)
        versiondata = {"versions": [firstver, secondver], "selected": firstver}
        responsedata = json.loads(response.content.decode('UTF-8'))
        self.assertEqual(responsedata, versiondata)

        # set the version back to latest through API.
        # using factory.patch as trouble getting client.patch to work (400 -- authentication?)
        # More or less the same thing, but does skip urls.py
        request = self.factory.patch(
            '/api/wfmodules/%d/dataversion' % self.wfmodule1.id,
            {'selected': secondver})
        force_authenticate(request, user=self.user)
        response = wfmodule_dataversion(request, pk=self.wfmodule1.id)
        self.assertIs(response.status_code, status.HTTP_204_NO_CONTENT)
        self.wfmodule1.refresh_from_db()
        self.assertEqual(self.wfmodule1.get_stored_data_version(), secondver)